Witam Stworzyłem wektor przyszłości w C++ 11, używając funkcji lambda.wektor przyszłości w 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));
Udało się pomyślnie, ale kiedy próbowałem pobrać wartości poprzez wywołanie for_each Zdobyłem błąd kompilacji, że ja nie rozumiem.
for_each(VF.begin(), VF.end(), [](future<double> x){cout << x.get() << " "; });
Wartości zostały pomyślnie uzyskane przez starego stylu pętli for:
for (int i = 0; i < VF.size(); i++)
cout << VF[i].get() << " ";
Dlaczego nie był w stanie skorzystać z funkcji for_each? Używałem Visual Studio 2013 próbując również kompilator INTEL (V16).
nie można kopiować przyszłości. użyj referencji lub przechowuj udostępnioną_teksturę. –