2013-11-21 15 views
5

Ich möchte die Futures mehrerer mit async erzeugten Threads in einer Liste speichern, um deren Ergebnisse später abrufen zu können.Speichern einer Zukunft in einer Liste

future<int> f = async(doLater, parameter); 
list<future<int>> l; 
l.push_back(f); 

Jedoch druckt der Compiler die folgende Fehlermeldung

/usr/include/c++/4.7/bits/stl_list.h:115:71: error: use of deleted function 'std::future<_Res>::future(const std::future<_Res>&) [with _Res = int; std::future<_Res> = std::future]'

ich etwas falsch tue oder nicht Listen soll Futures speichern? Wenn sie nicht sind, was stattdessen zu verwenden?

+4

http://www.youtube.com/watch?v=hdcTmpvDO0I –

+0

@ R.MartinhoFernandes Ich verstehe nicht, wie das Video relevant ist: S – Roman

+0

Sie es einfach bewegen müssen :) –

Antwort

10

std::future ist nicht kopierbar - Sie müssen in die Liste wechseln. Entweder:

future<int> f = async(doLater, parameter); 
list<future<int>> l; 
l.push_back(std::move(f)); 

oder:

list<future<int>> l; 
l.push_back(async(doLater, parameter)); 

funktionieren wird, wobei letztere bevorzugt, da es kein fahrener von Objekt nicht verlassen den Umfang Littering.

Verwandte Themen