首页 > 解决方案 > 为什么我不能用异步初始化向量?

问题描述

这是一个例子:

#include <vector>
#include <future>
using namespace std;

int f(){ return 3; }

int main(){
    vector<future<int>> works;
    works.push_back(async(f));

    vector<int> works2{f()};

    vector<future<int>> fails{async(f)};
}

除非我注释掉我得到的最后一行:

use of deleted function ‘std::future<_Res>::future(const std::future<_Res>&) [with _Res = int]’
     { ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }

使用 gcc 7。如果我理解它,它说它不能从对未来的引用构建未来。但是我无法构建自己对这一点的理解,这与它与 push_back 一起工作是一致的。

标签: c++asynchronous

解决方案


推荐阅读