C++中 由decltype指定类型和由auto指定类型有何区别

autodecltype是两种类型推断的方式,它们的主要区别有三个方面:
第一,auto类型说明符用编译器计算变量的初始值来推断其类型,而decltype虽然也让编译器分析表达式并得到它的类型,但是不实际计算表达式的值
第二,编译器推断出来的auto类型有时候和初始值的类型并不完全一样,编译器会适当地改变结果使其更符合初始化规则。例如,auto一般会忽略掉顶层const,而把底层const保留下来。与之相反,decltype会保留变量的顶层const。
第三,与auto不同,decltype的结果类型与表达式形式密切相关,如果变量名加上了一对括号,则得到的类型与不加括号时会完全不同。如果decltype使用的是一个不加括号的变量,则得到的结果就是该变量的类型;如果给变量加上一层或多层括号,则编译器将推断得到引用类型

你可能感兴趣的:(type)