您如何使用参数包参数键入功能指针类型

How do you typedef a function pointer type with parameter pack arguments

本文关键字:参数 功能 指针 类型 何使用 包参数      更新时间:2023-10-16

在函数指针中键入参数包的语法是什么?

我希望能够打字功能指针,但是编译器当我做这样的事情时抱怨

template< class ...Args >
struct method { typedef typename void(*type)(void*, Args...); };

沿着error: expected nested-name-specifier before 'void'

的消息带有消息

没有typename的工作正常。http://coliru.stacked-crooked.com/a/64b3fbec9276dd70

您不应该在此处使用typename,因为没有 nested-name-name-depifier

我想您应该从typedef行删除typename

template <typename ... Args>
struct method
 { typedef void(*type)(void*, Args...); };

另一个解决方案可以使用using代替typedef(IMHO更清楚)

template <typename ... Args>
struct method
 { using type = void(*)(void*, Args...); };