将未来存储在列表中

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

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:错误:使用已删除的函数'std :: future <_Res> :: future(const std :: future <_Res>&)[with _Res = int; std :: future <_Res> = std :: future]'

我做错了什么或者不是应该存储期货的列表? 如果他们不是,用什么来代替?


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.djcxy.com/p/30743.html

上一篇: Storing a future in a list

下一篇: efficient handling of synchronous case