【发布时间】:2021-09-20 11:51:27
【问题描述】:
我有一个简单的代码:
#include <atomic>
int main()
{
std::atomic<int> a = 0;
}
此代码在带有 -std=c++17 的 GCC 11.1.0 中编译良好,但在 -std=c++14 和 -std=c++11 时编译失败。
使用已删除的函数 std::atomic::atomic(const std::atomic&)
这是为什么呢?在 C++17 类中 std::atomic 仍然没有复制构造函数。为什么这段代码对 -std=c++17 有效?
当然我知道首选的样式是使用{},但我只是好奇为什么上面的代码从 C++17 开始编译得很好。
【问题讨论】:
标签: c++ initialization c++17 stdatomic copy-elision