E 'possibile chiamare oggetti funzione creati con std :: bind usando std :: async. Il seguente codice non riesce a compilare:Può std :: call std :: oggetti funzione asincrona?
#include <iostream>
#include <future>
#include <functional>
using namespace std;
class Adder {
public:
int add(int x, int y) {
return x + y;
}
};
int main(int argc, const char * argv[])
{
Adder a;
function<int(int, int)> sumFunc = bind(&Adder::add, &a, 1, 2);
auto future = async(launch::async, sumFunc); // ERROR HERE
cout << future.get();
return 0;
}
L'errore è:
Nessuna funzione di corrispondenza per chiamata a 'async': modello Candidato ignorato: il fallimento di sostituzione [con Fp = std :: _1: : la funzione &, Args = <>]: nessun tipo di nome 'type' in 'std :: _1 :: __ invoke_of,>
è solo non è possibile utilizzare asincrona con gli oggetti std :: funzione o sono io fare qualcosa di sbagliato?
(Questo è stato compilato utilizzando Xcode 5 con il 5.0 compilatore di Apple LLVM)
dove "async" ottiene gli argomenti del functor? Prova a passare una 'std :: function'. –
juanchopanza