标准规定:
如果占位符是
decltype(auto)类型说明符,则T将单独作为占位符。decltype(auto)*x7d = &i;//decltype(auto),声明的类型不是普通的decltype(auto)
但尚不清楚是否仍然允许使用cv-限定符。如果他们被允许的话,这是有道理的。编译者在这个问题上似乎有不同意见。下面的代码已被g++接受但是被clang++拒绝,vc++似乎根本不支持decltype(auto)变量:
int main()
{
const decltype(auto) sz_text{"test"};
}发布于 2018-01-15 12:30:47
要回答这个问题,我们需要引用上一段,它指定了什么是T。在这种情况下,[dcl.type.auto.deduct]/2说(强调我的):
包含占位符类型的类型T和相应的初始化器e被确定如下:
在本例中,T是sz_text、cv-限定符和all的整体声明类型。您引用的段落非常清楚,如果它包含decltype(auto)作为占位符,则必须是它,而且仅此而已。
GCC的虫子。一个已经报告的。
https://stackoverflow.com/questions/48262974
复制相似问题