41、auto、decltype和decltype(auto)的用法

(1)auto

C++11新标准引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型。和原来那些只对应某种特定的类型说明符(例如 int)不同,auto 让编译器通过初始值来进行类型推演。从而获得定义变量的类型,所以说 auto 定义的变量必须 有初始值。举个例子:

41、auto、decltype和decltype(auto)的用法

 

(2)decltype

有的时候我们还会遇到这种情况,我们希望从表达式中推断出要定义变量的类型,但却不想用表达式的 值去初始化变量。还有可能是函数的返回类型为某表达式的值类型。在这些时候auto显得就无力了,所 以C++11又引入了第二种类型说明符decltype,它的作用是选择并返回操作数的数据类型。在此过程 中,编译器只是分析表达式并得到它的类型,却不进行实际的计算表达式的值。

(3)decltype(auto)

decltype(auto)是C++14新增的类型指示符,可以用来声明变量以及指示函数返回类型。在使用时,会将“=”号左边的表达式替换掉auto,再根据decltype的语法规则来确定类型。举个例子:

41、auto、decltype和decltype(auto)的用法

 

上一篇:100、C++ 11有哪些新特性?


下一篇:C++11