1.如果括号里为一个变量 那么推断类型就为这个变量的类型(不会像auto移除const 引用等)
2.为表达式 那么如果表达式结果有固定地址 那么推断类型为这个变量的引用类型 如果表达式结果没有固定地址 那么推断类型为这个变量的类型
int a{ 21 };
int b = { 216 }
decltype(a)y{500};//y为int类型
decltype(a + b) x{ 200 };//x为int类型
decltype(a > b ? a : b) c{ a };//c为int&类型
decltype((a)) d{a};//d为int&类型