https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85069
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |WAITING Last reconfirmed| |2018-03-24 Ever confirmed|0 |1 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- std::invoke_result_t<F()> is F, so you're trying to call log_type<F> so the error is correct. Maybe you meant to use std::invoke_result_t<F>? The invoke_result trait doesn't work the same as result_of (it would be pointless to replace result_of with something that works identically but has a different name).