将未来存储在列表中
我想在列表中存储使用异步生成的几个线程的未来,以便稍后检索它们的结果。
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