2013-11-21 11 views
5

asyncを使用して生成されたいくつかのスレッドの先をリストに保存して、後でその結果を取得したいと考えています。未来をリストに保存する

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

:あなたはそれを移動する必要が –

+0

@ R.MartinhoFernandes私はビデオが関連しているかを理解していない – Roman

+0

S :) –

答えて

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)); 

は、それが移動-からスコープを散らかすオブジェクトを残さないので、後者が好ましいことで、動作します。

http://www.youtube.com/watch?v=hdcTmpvDO0I
関連する問題