我是std::async
的新手,我在理解它是如何工作方面遇到了问题。我看到了如何将成员函数传递到Web上某处的std::async
的示例,但似乎没有编译。问题出在这里?没有lambda怎么办呢?
class Test {
std::future<void> f;
void test() {}
void runTest() {
// ERROR no instance overloaded matches argument list
f = std::async(std::launch::async, &Test::test, this);
// OK...
f = std::async(std::launch::async, [this] {test();});
}
void testRes() {
f.get();
}
};
答案 0 :(得分:0)
您应该能够使用std :: bind来创建一个可调用的函数对象:
f = std::async(std::launch::async, std::bind(&Test::test, this));
在您的示例&amp; Test :: test中,不是一个带有Test
类型参数的函数,正如std::async
所期望的那样。相反,它是成员函数,必须以不同方式调用。