私はクラスを持っています:
struct C {
int F(int, char) { return 0; }
};
そして、変数の関数をstd::function呼び出すを作成する必要があります。C::Fc
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