2

私はクラスを持っています:

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

4

1 に答える 1