0
我在想,decltype((X))給予&引用類型,但一些實驗表明某事別人:C++ 11:decltype((x))和decltype((x + 1))的類型是不同的?
#include<stdio.h>
int main(){
int x = 0;
decltype((x)) r = x;
r = 1;
printf("%d\n",x);
decltype((x+1)) i = x;
i = 2;
printf("%d\n",x);
decltype((1)) k = x;
k = 3;
printf("%d\n",x);
return 0;
}
我期待的是(X)和(x + 1)和(1)竟被全部給出「int &」。但是運行結果是
1
1
1
我預計隨着各decltype檢索參考,但似乎只是一號工程運行結果應該1,2,3,同時兼具(X + 1)(1)給出只有int,而不是'int &'。 爲什麼,(x)和(x + 1)是不同的id表達式類型?
如果我正確理解標準,'x'是一個* id-表達式*,但'(x)'不是。 –
[\ [expr.prim.lambda \]](http://eel.is/c++draft/expr.prim.lambda#20)每個出現的'decltype((x))'其中'x'是一個可能用括號表示的名稱爲自動存儲持續時間的實體 的id表達式被視爲「x」被轉換爲對相應數據的訪問 如果'x'是odr-使用表示的實體。 – 0x499602D2
@ 0x499602D2這段代碼中的閉包類型在哪裏? –