是否有可能创建一个std::vector
可以持有std::function
任何签名的?(函数参数都是预先绑定的。)
我试过std::vector<std::function<void()> >
了,因为如果我只有一种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));