在对不可复制变量(如std::atomic<int>)执行成员初始化时,根据应答这里,需要使用direct-initialization而不是copy-initialization。但是,当我在g++ 7.4.0中打开g++ 7.4.0时,似乎后者也很好。
#include <atomic>
class A {
std::atomic<int> a = 0; // copy-initialization
std::atomic<int> b{0}; // direct-initialization
};$ g++ -c atomic.cc -std=c++11 // or c++14
atomic.cc:4:26: error: use of deleted function ‘std::atomic<int>::atomic(const std::atomic<int>&)’
std::atomic<int> a = 0; // copy-initialization
$ g++ -c atomic.cc -std=c++17
// no error在用g++ 6.5.0编译时,即使使用-std=c++17,它也失败了。这里哪一个是对的?
发布于 2019-09-30 08:49:40
https://stackoverflow.com/questions/58164350
复制相似问题