https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70810
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- The compiler doesn't have to deduce the parameter pack Ts... in that example, because it is provided explicitly here: Invoker<std::string, int> invoker; and so the compiler knows the exact type of std::function<void(Ts...)> here: invoker.invoke(foo, "a", 1); // ok without needing to deduce anything. If Visual Studio compiles it then that seems like a bug in VC++ to me.