2013-11-21 18 views
5

我想存儲在列表中使用異步生成的多個線程的未來,以便稍後檢索其結果。在列表中存儲未來

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

但是編譯器打印以下錯誤消息

/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]'

難道我做錯了什麼或不應該列出來存儲期貨?如果他們不是,用什麼來代替?

+4

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

+0

@ R.MartinhoFernandes我不明白視頻如何相關:S – Roman

+0

你只需要移動它:) –

回答

10

std::future不可複製 - 您需要進入列表。或者:

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

或:

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

將工作,而後者是優選的,因爲它不會留下一個移動-從對象亂扔的範圍。