任意の署名を持つstd::vector
を保持できる を作成することは可能ですか? std::function
(関数の引数はすべて事前にバインドされます。)
std::vector<std::function<void()> >
そのタイプのものが1つしかない場合は、std::function
任意の関数をそれにバインドできるため、試しました。
これはベクトル内では機能しないようです:std::bind
以外の署名を持つベクトルに関数を追加しようとすると、次のvoid()
ようになります:
No matching member function for call to 'push_back'
これを行う方法はありますか?
編集:
引数が で事前にバインドされている限り、std::function<void()>
返す関数をバインドできることを思い出しましたが、署名をバインドすることはできませんが、私の目的では十分に一般的であるため、次のように機能します。void
std::bind
class A
{
public:
void test(int _a){ return 0; };
};
A a;
std::vector<std::function<void()> > funcArray;
funcArray.push_back(std::bind(&A::test, std::ref(a), 0));