c – 在列表中存储未来

前端之家收集整理的这篇文章主要介绍了c – 在列表中存储未来前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在列表中存储使用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));

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

原文链接:https://www.f2er.com/c/119601.html

猜你在找的C&C++相关文章