私はクラスを持っています:
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
またはの助けを借りて実装できると思いますが、boost::function_types
できませんでした。
経験のある方、やり方を教えていただけないでしょうか?
PS。VS 2010