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)woulすべて "int &"となります。しかし、実行結果は、私はしばらくの間、両方の(X + 1)各decltypeは、参照を取得するが、唯一の第1の作品だとして実行結果(1)を与える1,2,3されるべきであることが期待
1
1
1
ましたintではなく 'int &'です。 なぜ、(x)と(x + 1)が異なるid-expression型ですか?
私が標準を正しく理解していれば、 'x'は* id-expression *ですが、'(x) 'はそうではありません。 –
[\ [expr.prim.lambda \]](http://eel.is/c++draft/expr.prim.lambda##20) 'declutype((x))'が出現するたびに 'x'が自動記憶域期間の名前エンティティ が 'X'がodr-た場合に宣言されていた閉鎖型の対応するデータ メンバへのアクセス中に形質転換したX ' 'かのように扱われる可能性が括弧ID-発現表示されたエンティティの使用。 – 0x499602D2
@ 0x499602D2このスニペットのクロージャータイプはどこですか? –