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这段代码中的闭包类型在哪里? –