自动(x);考虑了名为 x 的变量的声明或 C++23 中的显式类型转换
Is auto(x); considered a declaration of a variable named x or an explicit type cast in C++23
我看到 this 上面写着:
Not a bug, auto(x);
is interpreted as auto x;
. Use +auto(x);
if you want that to be an expression.
以上似乎暗示由于 auto(x);
是一个声明(等同于 auto x;
)它应该被拒绝,因为我们正在使用 auto
并且没有初始化器.
而 this 状态:
Yes this changed in C++23 so auto(X) creates an rvalue of the decayed type of x.
以上引用的说法似乎相互矛盾。所以我的问题是 C++23 标准对此有何看法?我的意思是 auto(x);
声明或显式类型转换。
注意相关 GCC 错误引用的代码:
int main() {
int x = 0;
float t;
t = auto(x);
}
auto(x)
这里不是声明;这无疑是一种表达方式。如果 auto(x)
用作表达式,它将表现为表达式。但是,如果它以使其成为声明的方式使用,那么它将如此表现。
我看到 this 上面写着:
Not a bug,
auto(x);
is interpreted asauto x;
. Use+auto(x);
if you want that to be an expression.
以上似乎暗示由于 auto(x);
是一个声明(等同于 auto x;
)它应该被拒绝,因为我们正在使用 auto
并且没有初始化器.
而 this 状态:
Yes this changed in C++23 so auto(X) creates an rvalue of the decayed type of x.
以上引用的说法似乎相互矛盾。所以我的问题是 C++23 标准对此有何看法?我的意思是 auto(x);
声明或显式类型转换。
注意相关 GCC 错误引用的代码:
int main() {
int x = 0;
float t;
t = auto(x);
}
auto(x)
这里不是声明;这无疑是一种表达方式。如果 auto(x)
用作表达式,它将表现为表达式。但是,如果它以使其成为声明的方式使用,那么它将如此表现。