int main(){
decltype(auto)&& a = 100;
}
上面的代码,在GCC和Clang中有错误。为什么不能参考'decltype(auto)'
int main(){
decltype(int)&& a = 100;
}
此代码正确。
在N4296,
在§8.3.2/6
如果一个typedef(7.1.3),一种类型的模板的参数(14.3.1)或decltype说明符(7.1.6.2)表示一种类型的TR 那就是类型T的引用,企图制造“左值参考CV TR”的类型创建类型 “左值参照T”,而试图创建的类型“右值参考cv TR”创建类型TR。
在§7.1.6.2
decltype说明符 decltype说明符:
decltype(表达式)
decltype(自动)
我认为§8.3。 2/6是措辞有问题。
为什么不允许参考decltype(自动)。 请告诉我相关的标准措辞。 对不起的英文不好。 谢谢。
谢谢。 §8.3.2/ 6混淆。 – Cocoa 2015-01-04 14:59:33
我同意,7.1.6.4清除了。 – quantdev 2015-01-04 15:09:00