ように私はそうのようなメソッドを介してのstd ::関数を渡すしようとしています:C++ 0xのはstd ::機能メソッドの引数
class dispatch
{
public:
deliver(std::function<void (void)> task);
}
予想通り、この作品。しかし、私はタスクとして提供されたメソッドのいくつかに引数を渡したいが、すべての異なる関数< ...>フォームに対してオーバーロードを作成する必要はありません。例えば
は、それが
deliver(std::function& task);
を次のようにすべての可能なだけでメソッドを作成すると、ちょうど...
dispatch->deliver(bind(&Object::method, X));
または
dispatch->deliver(bind(&Object::method, X, arg1, arg2));
などで呼び出しています
ありがとうすべての入力に対して。私の本当の欠点は、ディスパッチ - >引き渡しを呼び出して、バインドコールでもある追加の引数を渡すことです。
dispatch->deliver(bind(&Object::method1, X1, bind(&Object::method1, X2));
error: /usr/include/c++/v1/functional:1539:13: error: no matching function for call to '__mu_expand' return __mu_expand(__ti, __uj, __indices());
クラス宣言の後に ';'がありません。 :-) –