1、用auto进行类型推导时(非引用)会忽略顶层const、保留底层const;
const int a = 1;
auto b = a; //b忽略顶层const属性
auto p = &a; //p保留底层const属性
2、用auto推导引用类型时,实际推导的是引用所绑定的对象;而被绑定的对象即使包含顶层const,也会被忽略掉;
const int a = 1;
const int &y = a;
auto b = y; //b实际推导的是忽略掉顶层const属性的a对象
3、用auto类型推导,定义引用时,需要显示的定义引用,并且会保留顶层const;
const int a = 1;
auto &y = a; //y是a的引用,保留了a的顶层const,而y本身变成了底层const
4、用auto定义多个变量时,*和&只属于声明符,而不是数据类型的一部分;因此类型必须一致;
int a = 1;
const int b = 1;
auto p = &a, &y = b; //错误,p的基本数据类型是int, 而y的是const int