我对以下代码有点困惑:
struct A {
std::atomic<int> a = 0;
};
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误:
复制"std :: atomic"类型的成员子对象调用已删除的构造函数
但几乎相同的代码确实有效:
struct A {
std::atomic<int> a = {0};
};
Run Code Online (Sandbox Code Playgroud)
Okey,如果第一个变体需要复制构造函数,那么它必须使用operator=().可是等等!这个运算符完美地工作,没有复制构造函数:
A a;
a.a = 1;
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释如何在简单操作方面扩展两个就地初始化吗?为什么第一个需要复制构造函数?