我想在列表中存储使用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]’
我做错了什么或不是应该存储期货的名单?如果不是,那么使用什么呢?
解决方法
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));
这将是有效的,后者是优选的,因为它不会让一个移动的物体乱扔垃圾.