不能用 () 创建原子
Can't create atomic with ()
我试图以不同的方式创建 std::atomic_bool
对象:
std::atomic_bool f1 = false; // OK
std::atomic_bool f2 = {false}; // OK
std::atomic_bool f3{false}; // OK
std::atomic_bool f4(false); // ERROR: expected identifier before «false»
为什么最后一个不行?
P.S:用g++ -std=c++20
编译。
编辑:这些是 class 成员变量。
不能用括号初始化成员变量,因为按照语法,那必须是成员函数声明。
在可以在变量声明中编写成员初始值设定项之前,这种语法怪癖并没有引起任何问题。
我试图以不同的方式创建 std::atomic_bool
对象:
std::atomic_bool f1 = false; // OK
std::atomic_bool f2 = {false}; // OK
std::atomic_bool f3{false}; // OK
std::atomic_bool f4(false); // ERROR: expected identifier before «false»
为什么最后一个不行?
P.S:用g++ -std=c++20
编译。
编辑:这些是 class 成员变量。
不能用括号初始化成员变量,因为按照语法,那必须是成员函数声明。
在可以在变量声明中编写成员初始值设定项之前,这种语法怪癖并没有引起任何问题。