C++ 在列表中存储未来

C++ 在列表中存储未来,c++,list,c++11,stl,future,C++,List,C++11,Stl,Future,我想将使用异步生成的几个线程的未来存储在一个列表中,以便稍后检索它们的结果 future<int> f = async(doLater, parameter); list<future<int>> l; l.push_back(f); future f=async(doLater,参数); 清单l; l、 推回(f); 但是,编译器会打印以下错误消息 /usr/include/c++/4.7/bits/stl_list.h:115:71:错误:使用已删除的

我想将使用异步生成的几个线程的未来存储在一个列表中,以便稍后检索它们的结果

future<int> f = async(doLater, parameter);
list<future<int>> l;
l.push_back(f);
future f=async(doLater,参数);
清单l;
l、 推回(f);
但是,编译器会打印以下错误消息

/usr/include/c++/4.7/bits/stl_list.h:115:71:错误:使用已删除的函数“std::future::future(const std::future&)[with _Res=int;std::future=std::future]'


我是做错了什么,还是列表不应该存储未来?如果不是,则使用什么替代?

std::future
不可复制-您需要移动到列表中。要么:

future<int> f = async(doLater, parameter);
list<future<int>> l;
l.push_back(std::move(f));
future f=async(doLater,参数);
清单l;
l、 推回(标准::移动(f));
或:

列表l;
l、 push_back(异步(doLater,参数));

将起作用,后者更可取,因为它不会留下从范围内移动的对象。

@R.MartinhoFernandes我不理解视频的相关性:你只需要移动它:)有意义。有没有什么方法可以让移动的方式更像我发布的方式,而不是将所有代码粘贴到一行中?(原始代码已经足够长了…)
list<future<int>> l;
l.push_back(async(doLater, parameter));