我打算采用C++ decltype类型推导完全攻略的说法了:
当程序员使用 decltype(exp) 获取类型时,编译器将根据以下三条规则得出结果:
1、如果 exp 是一个不被括号( )包围的表达式,或者是一个类成员访问表达式,或者是一个单独的变量,那么 decltype(exp) 的类型就和 exp 一致,这是最普遍最常见的情况。
2、如果 exp 是函数调用,那么 decltype(exp) 的类型就和函数返回值的类型一致。
3、如果 exp 是一个左值,或者被括号( )包围,那么 decltype(exp) 的类型就是 exp 的引用;假设 exp 的类型为 T,那么 decltype(exp) 的类型就是 T&。
原网站还有案例可供参考。