聚合初始化和已删除副本构造函数,也称为字段不可复制对象

问题描述 投票:1回答:1

是否有一种方法可以在向量下面进行初始化?

struct Test {
std::atomic_bool is_enabled;
int age;};

int main()
{
    std::vector<Test> tests{
        Test{false, 42},
        Test{true, 77}
    };
}

[最明显(至少对我来说)的方法无效。问题是std :: atomic_bool is_enabled删除了副本构造函数,我不知道该怎么办。 :)

c++ copy-constructor aggregate-initialization
1个回答
3
投票

您可以为Test类型实现一个复制构造函数。您只是不能依赖原子的复制构造,也不能因此而获得Test的自动生成的复制构造函数。

不过要当心:您正在做的事情似乎很脆弱。您为什么认为一个成员需要是原子的,而其他成员则不需要?谁来保护媒介本身?

© www.soinside.com 2019 - 2024. All rights reserved.