我正在尝试创建一个对象,该对象可以将函数及其参数提供给他的构造函数。然后这个类将在一个 lambda 中调用给定的函数,该函数被传递给一个线程。类似的东西
class worker {
public:
template <class Fn, class... Args>
explicit worker(Fn f, Args ... args) {
t = std::thread([&]() -> void {
f(args...);
});
}
private:
std::thread t;
};
int main() {
worker t([]() -> void {
for (size_t i = 0; i < 100; i++)
std::cout << i << std::endl;
});
return 0;
}
但我收到以下错误
error: parameter packs not expanded with '...': f(args...);
我在这里做错了什么?任何帮助,将不胜感激。