首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何初始化std::array<std::atomic<bool>> -无拷贝或移动ctor

如何初始化std::array<std::atomic<bool>> -无拷贝或移动ctor
EN

Stack Overflow用户
提问于 2021-04-15 03:08:08
回答 1查看 73关注 0票数 3

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

例如:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-15 06:44:43

您可以为std::array的初始化器列表中的每一项使用初始化器列表。下面是如何实现的:

代码语言:javascript
复制
struct Foo {
    Foo()
    : flags{{
        {true},
        {true}
    }}
    { /* no op */ }
    std::array<std::atomic<bool>, 2> flags;
};

虽然语法有点奇怪,但它工作得很好(在GCC,Clang,MSVC和ICC上进行了测试)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67097726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档