如何将对象传递给异步启动的函数?
#include <future>
#include <thread>
class SomeObject
{
void Dummy();
}
class A
{
public:
void Test1();
void Test2(SomeObject o);
void Test3(SomeObject &o);
}
A a;
auto a = std::async(std::launch::async, &A::Test1, a); // OK
SomeObject o;
auto b = std::async(std::launch::async, &A::Test2, a, o); // ERROR
auto c = std::async(std::launch::async, &A::Test3, a, std::ref(o)); // ERROR
函数 T1 启动时没有错误。Test2 和 Test3 需要一个对象参数,但我得到了错误:没有重载函数的实例 std::async 与参数列表匹配。