我遇到了一些困难,将强制转换重载为指向类的函数运算符的指针。在代码中,我想要的是:
typedef int(*funcptrtype)(int);
struct castable {
operator funcptrtype() {return NULL;}
};
但我希望能够在不使用typedef
. 如果你很好奇,我需要这个,因为 c++11 之前的模板别名不可用(所以这个typedef
技巧在模板化上下文中不是一个选项......)
我通常希望这可以工作:
operator int(*)(int)() {return NULL;}
但事实并非如此。编译器(g++ 4.6.1)说:
error: ‘<invalid operator>’ declared as function returning a function
这有效:
int (* operator()())(int){return 0;}
但是你实际上重载了operator()
返回一个函数指针:)
标准说:
转换类型 ID 不应代表函数类型或数组类型
但它没有说函数指针类型(第一个代码片段无论如何都可以工作......)。
有谁知道 w/o 的正确语法typedef
?