1 decltype关键字
decltype是C++11中引入的新的类型说明符。编译器根据分析表达式或者函数返回值来分析其类型。decltype的详细用法,请参考《C++中decltype的使用方法》
2 decltype与左值和右值
decltype后面跟的表达式是左值或者右值时,编译器分析的类型会有所不同。如果表达式(非单个变量)的求值结果是左值,则编译器会得到一个引用类型;如果表达式(非单个变量)的求值结果是右值,则编译器会得到一个与表达式相同的类型。
int arr[2] = { 10,20 };
decltype (arr[1])k = i;
decltype (&arr[1])j = &i;
其中,arr是一个拥有2个元素的int数组,arr[1]的类型是int,该表达式是一个左值,因此k的类型是一个引用类型,即int&;&arr[1]的类型是int*,该表达式是一个右值,因此j的类型是int*。