6

次のコードを検討してください。

#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 はそうです (こちらを参照)。

4

2 に答える 2