我有一个类:转换类型为int(C :: *)(INT,CHAR)为int类型(INT,CHAR)
struct C {
int F(int, char) { return 0; }
};
,我需要创建一个std::function
,它会调用C::F
一个变量c
功能:
C c;
std::function<int(int, char)> f;
...
f = std::bind(&C::F, &c, _1, _2);
但如果函数的签名被改变,我需要改变的std ::功能以及。
,所以我想不重复签名:
C c;
std::function<delete_class<decltype(&C::F)>::type> f;
...
f = std::bind(&C::F, &c, _1, _2);
其中delete_class是一些神奇的帮手,它改变输入int(C::*)(int, char)
到int(int, char)
。
我怀疑,我可以在boost::mpl
或boost::function_types
的帮助下实现它,但我做不到。
有人,谁有经验,告诉我该怎么做?
PS。 VS 2010
你能不能只需使用'auto f = std :: bind(&C :: F,&c,_1,_2);'? – soon 2013-04-25 16:44:34
在真正的应用f是一个结构的成员,所以我不能使用“自动”那里 – Alek86 2013-04-25 16:51:13