【发布时间】:2019-08-11 17:39:16
【问题描述】:
我不知道如何创建以下内容:
std::pair<std::atomic<bool>, int>
我总是得到
/usr/include/c++/5.5.0/bits/stl_pair.h:139:45:错误:使用已删除的函数'std::atomic::atomic(const std::atomic&)'
: 第一个(__x), 第二个(std::forward<_u2>(__y)) { }
我试过了
std::pair<std::atomic<bool>, int> pair = std::make_pair(true, 1); //doesn't work
std::pair<std::atomic<bool>, int> pair = std::make_pair({true}, 1); //doesn't work
std::pair<std::atomic<bool>, int> pair = std::make_pair(std::atomic<bool>(true), 1); //doesn't work
std::pair<std::atomic<bool>, int> pair = std::make_pair(std::move(std::atomic<bool>(true)), 1); //doesn't work
我知道 std::atomic 是不可复制的,那么你应该如何成对创建它?这是不可能的吗?
【问题讨论】:
-
你是在 C++17 模式下编译,还是更早的?
-
{std::piecewise_construct, std::make_tuple(true), std::make_tuple(1)}用于复制初始化上下文 -
我正在用 c++14 编译
-
@PiotrSkotnicki 你知道如何使用 std::vector 吗?例如。我有一个原子向量,我想把一个放在后面。由于编译器错误,我不能这样做: std::vector<:atomic>> atomics; atomics.emplace_back(true);
标签: c++ std atomic std-pair stdatomic