我发现它们不同,语言标准说明每个语句应该检索哪种类型(变量和表达式之间的区别)。但我真的很想知道为什么这两种类型应该有所不同?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提案”给出了一些有趣的论文。 –