Passando lambdas para std :: thread e chamando métodos de classe
Estou com problemas para usar std :: thread junto com lambdas. Eu tenho um método TheMethod onde eu deveria usar std :: thread para paralelizar algumas chamadas de função para métodos da mesma classe.
Defino uma função lambda e tento passá-la da seguinte maneira para a instância std :: thread que crio:
auto functor =
[this](const Cursor& c, size_t& result) ->void {result = classMethod(c);};
size_t a;
Cursor cursor = someCursor();
std::thread t1(functor, cursor, a);
t1.join();
Infelizmente, o compilador me fornece:
/usr/include/c++/4.8/functional:1697:61: error: no type named ‘type’ in ‘class std::result_of<TheMethod...
Tentei muitas combinações na definição lambda e na maneira de chamar o construtor std :: thread, mas sempre recebo o mesmo erro. A biblioteca de threads está incluída, eu também vinculo o pthread.
Obrigado pelas dicas!