Skip to content

Latest commit

 

History

History
6 lines (6 loc) · 526 Bytes

loser_linker.md

File metadata and controls

6 lines (6 loc) · 526 Bytes

6能转换为 std::atomic,
是因为调用了constexpr atomic(T) noexcept;用户自定义转换构造函数,
相当于std::atomic<int> n = std::atomic<int>(6);
在 C++17之前的版本,通过调用复制或移动构造函数来完成 n 的初始化,
标准规定 std::atomic 既不可复制亦不可移动,所以编译失败。
C++17标准以后,复制清除变成强制要求,与此同时,用右值初始化对象不会再调用移动构造,而是直接原位构造,所以通过编译。