Ciao Ho creato un vettore del futuro in C++ 11 usando una funzione lambda.vettore del futuro in C++ 11
vector<double> v = { 0, 1.1, 2.2, 3.3, 4.4, 5.5 };
auto K = [=](double z){
double y=0;
for (const auto x : v)
y += x*x*z;
return y;
};
vector<future<double>> VF;
for (double i : {1,2,3,4,5,6,7,8,9})
VF.push_back(async(K,i));
Ha funzionato con successo, ma quando ho provato a recuperare i valori tramite una chiamata for_each ho ottenuto un errore di compilazione che non capisco.
for_each(VF.begin(), VF.end(), [](future<double> x){cout << x.get() << " "; });
I valori sono stati ottenuti con successo da un vecchio stile per ciclo:
for (int i = 0; i < VF.size(); i++)
cout << VF[i].get() << " ";
Perché non ero in grado di utilizzare la funzione di for_each? Stavo usando Visual Studio 2013 cercando anche il compilatore INTEL (V16).
non è possibile copiare i futures. utilizzare un riferimento o memorizzare un shared_future. –