在列表中存储未来

Man*_*uel 9 c++ stl future list c++11

我想在列表中存储使用async生成的几个线程的期货以便稍后检索它们的结果.

future<int> f = async(doLater, parameter);
list<future<int>> l;
l.push_back(f);
Run Code Online (Sandbox Code Playgroud)

但是,编译器会输出以下错误消息

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

我做错了什么或不是应该存储期货的名单?如果不是,那么使用什么呢?

Cas*_*sey 15

std::future不可复制 - 您需要进入列表.或者:

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

要么:

list<future<int>> l;
l.push_back(async(doLater, parameter));
Run Code Online (Sandbox Code Playgroud)

这将是有效的,后者是优选的,因为它不会让一个移动的物体乱扔垃圾.