我有一个带有可变数量参数的成员函数,存储在std::function
中,我想绑定实例并获得一个独立的函数对象。
template <class T, class R, class... Args>
void connect(const T& t, std::function<R(const T&, Args...)> f) {
std::function<R(Args...)> = /* bind the instance c into the function? */
}
// ...
Class c;
connect(c, &Class::foo);
对于固定数量的参数,我使用std::bind
,但我不知道如何为变量参数执行此操作。
答案 0 :(得分:15)
解决方案非常简单,因为你已经有了大量的参数和所有内容:
template <class T, class R, class... Args>
void connect(const T& t, std::function<R(const T&, Args...)> f) {
// or capture 't' by-value
std::function<R(Args...)> fun = [&t,f](Args... args){ f(t,args...); };
// ...
}