将参数包打包成函数指针的语法是什么?
我希望能够键入一个函数指针,但是当我做这样的事情时,编译器会抱怨
template< class ...Args >
struct method { typedef typename void(*type)(void*, Args...); };
带有error: expected nested-name-specifier before 'void'
答案 0 :(得分:2)
没有typename
它可以正常工作。 http://coliru.stacked-crooked.com/a/64b3fbec9276dd70
您不应在此处使用typename
,因为没有嵌套名称说明符。
答案 1 :(得分:1)
我认为您应该从typename
行
typedef
template <typename ... Args>
struct method
{ typedef void(*type)(void*, Args...); };
另一个解决方案可能是使用using
代替typedef
(恕我直言会更清晰)
template <typename ... Args>
struct method
{ using type = void(*)(void*, Args...); };