【发布时间】:2015-03-02 05:27:53
【问题描述】:
int main(){
decltype(auto)&& a = 100;
}
以上代码,GCC和Clang中的错误。
int main(){
decltype(int)&& a = 100;
}
此代码正确。
在 N4296 中,
在第 8.3.2/6 节中
如果 typedef (7.1.3)、类型模板参数 (14.3.1) 或 decltype-specifier (7.1.6.2) 表示类型 TR 这是对类型 T 的引用,尝试创建类型“对 cv TR 的左值引用”会创建类型 “对 T 的左值引用”,而尝试创建类型“对 cv TR 的右值引用”会创建类型 TR。
decltype-specifier in § 7.1.6.2
decltype-specifier:
decltype ( 表达式 )
decltype ( 自动 )
我认为 § 8.3.2/6 的措辞有问题。
为什么不允许引用 decltype(auto)。 请告诉我相关标准的措辞。 抱歉英语不好。 谢谢。
【问题讨论】: