次のコードを検討してください。
#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 はそうです (こちらを参照)。