语法格式不同:
auto varname = value; //auto的语法格式
decltype(exp) varname [= value]; //decltype的语法格式
对cv限定符的处理:
- const 关键字用来表示数据是只读的,也就是不能被修改;
- volatile 和 const 是相反的,它用来表示数据是可变的、易变的,目的是不让 CPU 将数据缓存到寄存器,而是从原始的内存中读取。
推导变量类型时,decltype 会 保留 cv 限定符,而 auto 有 可能会去掉 cv 限定符。
对引用的处理:
decltype 会保留引用类型,而 auto 会抛弃引用类型,直接推导出它的原始类型。
总结
使用decltype
比较健壮,使用auto
比较简洁。