首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cv-限定符是否允许用于解密类型(Auto)变量?

cv-限定符是否允许用于解密类型(Auto)变量?
EN

Stack Overflow用户
提问于 2018-01-15 12:23:28
回答 1查看 430关注 0票数 13

标准规定:

如果占位符是decltype(auto)类型说明符,则T将单独作为占位符。 decltype(auto)*x7d = &i; // decltype(auto),声明的类型不是普通的decltype(auto)

但尚不清楚是否仍然允许使用cv-限定符。如果他们被允许的话,这是有道理的。编译者在这个问题上似乎有不同意见。下面的代码已被g++接受但是被clang++拒绝,vc++似乎根本不支持decltype(auto)变量:

代码语言:javascript
复制
int main()
{
    const decltype(auto) sz_text{"test"};
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 12:30:47

要回答这个问题,我们需要引用上一段,它指定了什么是T。在这种情况下,[dcl.type.auto.deduct]/2说(强调我的):

包含占位符类型的类型T和相应的初始化器e被确定如下:

  • 对于使用声明的变量(包含占位符类型的类型),T是变量的声明类型,e是初始化器。如果初始化是直接列表初始化,则初始化程序应该是只包含单个赋值表达式的带括号的列表,而e是赋值表达式;

在本例中,Tsz_text、cv-限定符和all的整体声明类型。您引用的段落非常清楚,如果它包含decltype(auto)作为占位符,则必须是它,而且仅此而已。

GCC的虫子。一个已经报告的

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

https://stackoverflow.com/questions/48262974

复制
相关文章

相似问题

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