希望从表达式的类型推断出要定义的变量的类型,但是不想用该表达式的值初始化变量,由此诞生了 decltype。
返回操作数的操作类型。¶
decltype(f()) sum =x;//sun的类型就是函数f的返回类型
变量的类型¶
const int ci = 0,&cj = ci;
decltype(ci) x = 0;
decltype(cj) y = x;
decltype(cj) z; //Error! z是一个引用(对应cj),必须初始化
decltype 和引用¶
如果加变量上一个括号,编译器就会把它当作一个 via 哦大师。
int i = 42,*p = &i,&r = i;
decltype(r+0) b;
decltype(*p) c;//Error! c是一个引用
decltype((i)) d;//Error!