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