我有一堂课:
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::function 。
所以我不想重复签名:
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
or的帮助下实现它boost::function_types
,但我做不到。
有经验的人可以告诉我怎么做吗?
PS。对比 2010