第一,auto类型说明符让编译器通过初始值推断其类型,而decltype虽然也让编译器分析表达式,但并不实际计算表达式的值。
第二,编译器推断出来的auto类型有时候与初始值类型不太一样,编译器会适当改变结果类型使其更符合规则。比如,auto会忽略顶层const。而decltype会保留顶层const。
第三,decltype的结果类型与表达式形式密切相关,如果是一层括号,得到的类型就是该变量的类型。如果是双层括号,最推断出引用类型。
本文详细对比了C++中auto与decltype的区别:1. auto让编译器通过初始值推断类型,忽略顶层const;2. decltype分析表达式但不计算值,并保留顶层const;3. decltype结果依赖于表达式形式,括号不同导致类型推断不同。
第一,auto类型说明符让编译器通过初始值推断其类型,而decltype虽然也让编译器分析表达式,但并不实际计算表达式的值。
第二,编译器推断出来的auto类型有时候与初始值类型不太一样,编译器会适当改变结果类型使其更符合规则。比如,auto会忽略顶层const。而decltype会保留顶层const。
第三,decltype的结果类型与表达式形式密切相关,如果是一层括号,得到的类型就是该变量的类型。如果是双层括号,最推断出引用类型。
1186
2025

被折叠的 条评论
为什么被折叠?