【问题标题】:Storing a future in a list将未来存储在列表中
【发布时间】:2013-12-06 06:03:38
【问题描述】:

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

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>&) [与_Res = int; std::future<_res> = std::future]'

我做错了什么还是列表不应该存储期货?如果不是,用什么代替?

【问题讨论】:

  • @R.MartinhoFernandes 我不明白视频的相关性:S
  • 你只需要移动它:)
  • 有道理。有没有办法以一种更像我 postet 的方式而不是将所有代码粘贴在一行中的方式进行移动? (原代码已经够长了……)

标签: c++ list c++11 stl future


【解决方案1】:

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));

会起作用,后者更可取,因为它不会留下移动的对象乱扔范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多