我有一个简单的代码:
#include <atomic>
int main()
{
std::atomic<int> a = 0;
}
这段代码使用 -std=c++17 编译通过,但是使用 -std=c++14 和 -std=c++11 会编译失败。
使用已删除函数 std::atomic::atomic(const std::atomic&)
为什么会这样呢?在 C++17 中,类 std::atomic
仍然没有拷贝构造函数。那么为什么这段代码在 -std=c++17 下是合法的呢?
当然我知道更推荐使用 {}
的风格,但我只是好奇为什么上述代码从 C++17 开始可以编译通过。