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