Как передать объект функции, которая запускается асинхронно?
#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 не соответствует списку аргументов.