constexpr和常量表达式:指值不会改变并且在编译过程就能得到计算结果得表达式
1.auto一般会忽略
decltype类型指示符:目的是从表达式的类型推断出要定义的变量的类型,但是不想用该表达式的值初始化变量
1.如果decltype使用的表达式是一个变量,则decltype返回该变量的类型。
const int ci = 0, &cj = ci; decltype(ci) x = 0; //x的类型是const int decltype(cj) y = x; //y的类型是const int&
2. 如果表达式的内容是解引用操作,则decltype将得到引用类型。
int i = 42, *p = &i, &r = i ; decltype(r + 0) b ; //加法的结果是int,b是一个(未初始化)int decltype(*p) c; //c是int &,必须初始化
3.decltype((variable)) (注意双括号)的结果永远是引用,而decltype(variable)的结果只有当variable本身就是一个引用时才是引用
decltype(( i )) d; //错误:d是int&,必须初始化 decltype( i ) e; //正确:e是一个(未初始化)int