我偶然发现了这,它说:
auto(x);不是一个bug,而是被解释为auto x;。如果希望使用+auto(x);作为表达式,请使用它。
auto(x);
auto x;
+auto(x);
以上似乎意味着,由于auto(x);是一个声明(相当于auto x;),因此应该拒绝它,因为我们使用的是auto,并且没有初始化器。
auto
而这声明:
是的,这在C++23中发生了变化,所以auto( x )创建了腐朽类型x的rvalue。
以上引述的说法似乎相互矛盾。因此,我的问题是,C++23标准对此有何说明?我的意思是auto(x);是一个声明或显式类型强制转换。
发布于 2022-05-07 17:12:45
请注意有关GCC错误引用的代码:
int main() { int x = 0; float t; t = auto(x); }
这里的auto(x)不是一个语句;它是一个明确的表达式。如果使用auto(x)作为表达式,它将表现为表达式。但是,如果它的使用方式使它成为一条语句,那么它就会表现为这样。
auto(x)
https://stackoverflow.com/questions/72154506
相似问题