使用关键字decltype的时候,如果表达式的结果为左值,那么作用于该表达式的decltype得到一个引用类型
如:
int i = 10;
int *p = &i;
decltype(*p) pp = i;
decltype(&p) rp = &p;
其中,因为解引用运算符返回的是左值,,所以对于pp的类型应该是引用类型int&,故应该进行初始化绑定一个对象;对于取地址运算符&则是相应的生成右值,因此对于rp,其类型应该为int**,即指向整型指针的指针。
对于上述解引用操作返回的是引用类型,个人理解,如*p = 20;(等同于i = 20)可理解为引用。