首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是auto(x);被认为是名为x的变量的声明或在C++23中强制转换的显式类型。

是auto(x);被认为是名为x的变量的声明或在C++23中强制转换的显式类型。
EN

Stack Overflow用户
提问于 2022-05-07 16:36:31
回答 1查看 126关注 0票数 1

我偶然发现了,它说:

auto(x);不是一个bug,而是被解释为auto x;。如果希望使用+auto(x);作为表达式,请使用它。

以上似乎意味着,由于auto(x);是一个声明(相当于auto x;),因此应该拒绝它,因为我们使用的是auto,并且没有初始化器。

声明:

是的,这在C++23中发生了变化,所以auto( x )创建了腐朽类型x的rvalue。

以上引述的说法似乎相互矛盾。因此,我的问题是,C++23标准对此有何说明?我的意思是auto(x);是一个声明或显式类型强制转换。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-07 17:12:45

请注意有关GCC错误引用的代码:

代码语言:javascript
复制
int main() {
  int x = 0;
  float t;
  t = auto(x);
}

这里的auto(x)不是一个语句;它是一个明确的表达式。如果使用auto(x)作为表达式,它将表现为表达式。但是,如果它的使用方式使它成为一条语句,那么它就会表现为这样。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72154506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档