C++11引入decltype说明符,可以获取
对象或者表达式的类型。
int x1 = 0;
decltype(x1) x2 = 0; // x2的类型为int
double x3 = 0;
decltype(x1+x3) x4 = x1 + x3; // x4的类型为double
decltype可以在非静态成员变量中使用,也可以在函数行参列表中使用。
struct S1
{
int x1;
decltype(x1) x2;
double x3;
decltype(x2+x3) x4;
};
C++11 中支持返回值类型推导的方法:
template<classT1,classT2>
auto sum(T1 a1,T2 a2)->decltype(a1+a2)
{
return a1+a2;
}
auto x4=sum(5,10.5);
C++14 标准中则可以直接使用auto支持返回值类型推导,而不需要后置返回值。但如果期望返回值类