根据表达式就能推导出类型, 所以不需要必须对创建的变量进行初始化, 而auto是需要根据右值的类型进行推导出左值的参数类型, 所以必须在创建的时候进行初始化.
2. decltype与数组
decltype...int cc = 0;
auto a = cc; // auto忽略了顶层const, 所以a的其实只是int类型
而**decltype在推导时并不会忽略顶层const**
const int cc...ptr; // decltype推导出的类型是 int **
6. decltype与模板
在模板中, 编译器能自行推导出传入函数的参数类型, 但是无法推导出返回值的类型, 这时我们就可以用decltype...T2的类型无法推导出来
template
auto func(T1 t1) -> decltype(t1+t2) // success, 返回值的类型可以通过...decltype推导出来
{
return t1 + t1;}
这里auto放在函数前面只是一个返回类型的占位符, 并不是auto来推导返回值类型, 而是decltype在函数返回的时候来推导返回值的类型