我發現它們不同,語言標準說明每個語句應該檢索哪種類型(變量和表達式之間的區別)。但我真的很想知道爲什麼這兩種類型應該有所不同?C++ 11爲什麼'decltype(x)'和'decltype((x))'的類型不同?
#include<stdio.h>
int x=0;
decltype((x)) y=x;
int main()
{
y=2;
printf("%d,",x);
decltype((1+2))&z=x;//OK (1+2) is an express, but why decltype should differ?
z=3;
printf("%d\n",x);
return 0;
}
運行結果是 '2,3'
那麼,爲什麼decltype((INT))是由設計INT &,什麼是C的代價++語言的設計在這裏?任何需要這種設計的語法一致性? (我不希望得到「This is by design」)
感謝您的解釋。
@some我沒有看到有關的解釋 –
@ JohannesSchaub-litb添加了報價的答案 –
您最好的機會是閱讀「decltype」的提議,我想。谷歌搜索「decltype wg21提案」給出了一些有趣的論文。 –