常见的坑
auto
可以在一条语句中声明多个变量,但是所有变量的类型必须一致。decltype
在分析表达式类型时并不执行表达式。decltype
处理解引用操作之后返回的是引用类型,而引用类型的变量必须初始化。decltype((variable))
的结果永远是引用。decltype(variable)
的结果只有当variable
是引用时才是引用。
必须要理解的点
auto
用于变量初始化时的类型推导,decltype
用于分析表达式的类型。auto
对引用类型推导时实际上用的是引用对象的值。auto
与const
:详见重学 C++:Const 二三事。decltype
与const
:详见重学 C++:Const 二三事。
建议
auto
尽量只在类型较长但比较清晰时使用。decltype
尽量不要使用。