相关疑难解决方法(0)

为什么即使删除了复制构造函数,std::atomic 也能从 C++17 编译?

我有一个简单的代码:

#include <atomic>

int main()
{
    std::atomic<int> a = 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码可以在 GCC 11.1.0 和 -std=c++17 下正常编译,但在 -std=c++14 和 -std=c++11 时失败。

使用删除的函数 std::atomic::atomic(const std::atomic&)

这是为什么?在 C++17 类中std::atomic仍然没有复制构造函数。为什么此代码对 -std=c++17 有效?

当然,我知道首选样式是 use {},但我很好奇为什么上面的代码从 C++17 开始就可以很好地编译。

c++ initialization copy-elision stdatomic c++17

10
推荐指数
1
解决办法
251
查看次数

标签 统计

c++ ×1

c++17 ×1

copy-elision ×1

initialization ×1

stdatomic ×1