考虑代码:
#include <atomic>
#include <iostream>
struct stru {
int a{};
int b{};
};
int main() {
std::atomic<stru> as;
auto s = as.load();
std::cout << s.a << ' ' << s.b << std::endl;
}
请注意,尽管stru
具有默认成员初始值设定项,但自 C++14 起,它仍然可以作为聚合类型。std::atomic
有一个简单的默认构造函数。根据标准,是否应该将 的成员as
初始化为零?clang 6.0.0 没有这样做(参见此处),而 gcc 7.2.0 似乎如此(参见此处)。