Int n = 1, *const p = &n;
const int * p2 = &n;
auto pt = p;
auto pt2 = p2;//pt为int *而pt2为const int *,因为auto会忽略顶层const而保留底层const
decltype(p) m = nullptr;
decltype(p2) m2;//m与m2都很好的保留了类型
int n=1, *i = &n;
auto p = (*i);
decltype(*i) p2 = n;//解引用得到的是引用类型
decltype(赋值表达式)得到的是引用类型,因为赋值表达式的值是引用类型
decltype((变量名))得到的也是引用类型