【发布时间】:2018-02-17 04:05:56
【问题描述】:
我对@987654321@ 声明感到困惑:
[...] 转换的结果,它是一个 prvalue 表达式(因为 C++17) 如果使用了转换构造函数,则用于 直接初始化对象。 最后一步通常是优化出来的,结果 转换直接在分配给 目标对象,但适当的构造函数(移动或复制)是 即使未使用,也需要可访问。 (直到 C++17)
我在 gcc 8.0.1 上测试了代码 std::atomic_int atom = 1;,它使用 C++17 编译,但 fails 使用 C++14 编译,但出现以下错误:
error: use of deleted function 'std::atomic<int>::atomic(const std::atomic<int>&)'
std::atomic_int atom = 1;
^
这是否意味着(总是?)不再需要在 C++17 中访问适当的构造函数(移动或复制)?
【问题讨论】:
标签: c++ initialization language-lawyer c++17 copy-initialization