第一,auto类型说明符让编译器通过初始值推断其类型,而decltype虽然也让编译器分析表达式,但并不实际计算表达式的值。
第二,编译器推断出来的auto类型有时候与初始值类型不太一样,编译器会适当改变结果类型使其更符合规则。比如,auto会忽略顶层const。而decltype会保留顶层const。
第三,decltype的结果类型与表达式形式密切相关,如果是一层括号,得到的类型就是该变量的类型。如果是双层括号,最推断出引用类型。
第一,auto类型说明符让编译器通过初始值推断其类型,而decltype虽然也让编译器分析表达式,但并不实际计算表达式的值。
第二,编译器推断出来的auto类型有时候与初始值类型不太一样,编译器会适当改变结果类型使其更符合规则。比如,auto会忽略顶层const。而decltype会保留顶层const。
第三,decltype的结果类型与表达式形式密切相关,如果是一层括号,得到的类型就是该变量的类型。如果是双层括号,最推断出引用类型。