gpt4 book ai didi

c++ - 如何初始化 std::array> — 没有复制或移动 ctors

转载 作者:行者123 更新时间:2023-12-04 03:30:05 24 4
gpt4 key购买 nike

在我的课上,我想要一个 std::array<std::atomic<bool>> ,我想在构造函数中通过成员初始化来初始化它。

例如:

struct Foo {

Foo()
: flags{{
true,
true
}}
{ /* no op */ }
std::array<std::atomic<bool>, 2> flags;
};

遗憾的是,这不起作用,给出:error: use of deleted function 'std::atomic<bool>::atomic(const std::atomic<bool>&)'

这是有道理的,因为 std::atomic<bool>既不可复制也不可移动。

所以,不知何故,我需要直接初始化这两个标志。

但是它的语法是什么?

这是一个实时代码链接:https://godbolt.org/z/fEsfaWGcn

最佳答案

您可以为 std::array 的初始化列表中的每一项使用一个初始化列表。方法如下:

struct Foo {
Foo()
: flags{{
{true},
{true}
}}
{ /* no op */ }
std::array<std::atomic<bool>, 2> flags;
};

虽然语法有点奇怪,但效果很好(在 GCC、Clang、MSVC 和 ICC 上测试过)。

关于c++ - 如何初始化 std::array<std::atomic<bool>> — 没有复制或移动 ctors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67097726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com