自动(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) 用作表达式,它将表现为表达式。但是,如果它以使其成为声明的方式使用,那么它将如此表现。