我已经尝试过这个宣言:
using fp_type = void (*)(fp_type);
不出所料,它不起作用。
a.cpp: In function 'int main()':
a.cpp:13:26: error: expected ';' before '(' token
using fp_type = void(*)(fp_type);
^
a.cpp:13:34: error: expected primary-expression before ')' token
using fp_type = void(*)(fp_type);
有解决方法吗?我正在考虑来自虚函数指针类型的reinterpret_cast
,但我不确定它是如何符合标准的。我正在调查这个因为我不想在::std::function
中捕获lambda,然后递归地使用它。我想将它传递给自己的函数指针。
答案 0 :(得分:1)
5.2.10 / 6保证您可以reinterpret_cast
指向不同类型的函数指针的函数指针,当您将其转换回原始类型时,您将返回原始指针值。
我更喜欢这个:
void foo (struct foo_wrapper&);
struct foo_wrapper {
void (*pf) (struct foo_wrapper&);
// add constructor and accessor for convenience
};