C++学习·处理类型

decltype和auto的区别

  1. auto 会忽略顶层const,decltype不会
  2. 不管对于引用(&a)还是解引用(*p)操作,auto的结果都是对象本身的类型,而decltype得到的结果都是引用类型
const int ci = i,&cr = ci,*p = ci;

auto a = ci;   //a是一个整数(顶层const被忽略)
auto b = cr;   //b同上
auto &c = ci;  //c是一个整型常量的引用(仍遵循引用初始化的规则)
auto d = *p;   //d是一个整数

decltype(ci) dx = 0;   //dx是一个整型常量
decltype(cr) dy = dx;  //dy是一个整型常量的引用,初始化为dx的引用
decltype(*p) dz = dx; //dz同上


需要注意的是,decltype((variable))的结果永远都是引用

你可能感兴趣的:(C++学习)