How can a template parameter pack have other trailing arguments?
问题 In the C++14 draft standard, [temp.param]/11 says: If a template-parameter of a primary class template or alias template is a template parameter pack, it shall be the last template-parameter. If you try compiling the following template, then the compiler will complain. template< typename ...Args, void(*f)(Args...) > // ERROR struct Bar {}; But how does it work in this case? template< typename F, F > struct Bar; template< typename ...Args, void(*f)(Args...) > // OK ??? struct Bar< void(*)(Args