我对cppref语句感到困惑:
[...] 如果使用了转换构造函数,则转换结果是纯右值表达式(自 C++17 起),然后用于直接初始化对象。 最后一步通常被优化,转换的结果直接在为目标对象分配的内存中构造,但是即使不使用适当的构造函数(移动或复制)也需要可访问。(直到 C++17)
std::atomic_int atom = 1;
我在 gcc 8.0.1 上测试了代码,它使用 C++17 编译,但使用 C++14失败,出现以下错误:
error: use of deleted function 'std::atomic<int>::atomic(const std::atomic<int>&)'
std::atomic_int atom = 1;
^
这是否意味着(总是?)不再需要在 C++17 中访问适当的构造函数(移动或复制)?