Hin*_*sum 1 c++ expression decltype c++11
我以为decltype((x))给出了&reference类型,但是有些实验显示了其他:
#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;
}
Run Code Online (Sandbox Code Playgroud)
我期待(x)和(x + 1)和(1)woul都给出"int&".然而,运行结果是
1
1
1
Run Code Online (Sandbox Code Playgroud)
我期望运行结果应该是1,2,3,因为每个decltype检索引用,但似乎只有第一个工作,而两个(x + 1)和(1)只给出int,而不是'int&'.为什么,(x)和(x + 1)是不同的id-expression类型?
x + 1是一个prvalue,所以它的decltype是公正的int.相比之下,x是一个id表达式,因此(x)是一个左值,它的decltype是int&.(有一个特殊规则,通过该规则,id-expression本身的decltype(例如x)是声明变量的实际类型,并且必须将表达式括起来以获取表达式的值类别.)
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |