C++11引入类型说明符decltype,作用是选择并返回操作数的数据类型,在此过程中,编译器分析表达式并得到它的类型,却不计算表达式的值:
decltype(f()) sum = x; //sum的类型就是函数f返回的类型
编译器并不实际调用函数f,而是返回f调用发生时的返回类型作为sum的类型。
decltype与const
decltype处理const和引用的方式与auto有些不同。如果decltype使用的表达式是一个变量,则其返回类型为变量的类型(包括顶层const与引用在内):
const int ci = 0, &cj = ci;
decltype(ci) x = 0; //x的类型是const int
decltype(cj) y = x; //y的类型是const int &