C++11新特性之autodecltype
Posted Harris-H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++11新特性之autodecltype相关的知识,希望对你有一定的参考价值。
C++11新特性之auto、decltype
1.类型推导
auto
根据等号右边类型推导变量的类型。
static auto b= 1; 会报错。因为类只能初始化静态常量(static const)
- auto的使用必须马上初始化,否则无法推导出类型
- auto在一行定义多个变量时,各个变量的推导不能产生二义性,否则编译失败
- auto不能用作函数参数
- 在类中auto不能用作非静态成员常量
- auto不能定义数组,可以定义指针
- auto无法推导出模板参数
decltype
上面介绍auto用于推导变量类型,而decltype则用于推导表达式类型,这里只用于编译器分析表达式的类型,表达式实际不会进行运算,上代码:
int a = 0, b = 0;
decltype(a + b) c = 0; // c是int,因为(a+b)返回一个右值
decltype(a += b) d = c;// d是int&,因为(a+=b)返回一个左值
d = 20;
cout << "c " << c << endl; // 输出c 20
auto和decltype结合
以上是关于C++11新特性之autodecltype的主要内容,如果未能解决你的问题,请参考以下文章