int x;
decltype(x) y;
decltype(x+y) xpy;//make xpy the same type as x+y;
xpy=x+y;
1.表达式类型不含括号
double x=5.5;
double y=7.9;
double &rx=x;
const double *pd;
decltype(x) w;//double
decltype(rx) u=y;//double &
decltype(pd) v;//double *
2.表达式为函数调用,类型是函数返回值
long indeed(int);
decltype(indeed(3)) m;//long
3.表达式是左值,var是表达式类型的引用
double xx=4.4;
decltype((xx)) r2=xx;//r2 double
decltype(xx) w=xx;//w double(第一项,表达式不含括号)
4.前三项都没有匹配,var类型是表达式类型
int j=3;
int &k=j;
int &n=j;
decltype(j+6) i1;//int
decltype(100L) i2;//long
decltype(k+n) i3;//int
//C++11新特性
tepmplate<class T1,class T2>
auto gt(T1 x,T2 y)->decltype(x+y){
、、、
return x+y;
}