decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导。
decltype 是“declare type”的缩写,译为“声明类型”。
auto 并不适用于所有的自动类型推导场景, decltype 关键字也被引入到 C++11 中。
auto 和 decltype 用法:
auto varname = value;
decltype(exp) varname = value;
其中,varname 表示变量名,value 表示赋给变量的值,exp 表示一个表达式。
auto 根据=右边的初始值 value 推导出变量的类型,而 decltype 根据 exp 表达式推导出变量的类型,跟=右边的 value 没有关系。
另外,auto 要求变量必须初始化,而 decltype 不要求。
原则上讲,exp 就是一个普通的表达式,它可以是任意复杂的形式,但是我们必须要保证 exp 的结果是有类型的,不能是 void;
#include <iostream>
using namespace std;
int main()
{
int a = 0;
decltype(a) b = 1; //b 被推导成了 int
decltype(10.8) x = 5.5; //x 被推导成了 double
decltype(x + 100) y; //y 被推导成了 double
cout << a << endl;
cout << b << e
本文介绍了C++11中新增的关键字decltype,作为自动类型推导的一种方式,它与auto有所不同。decltype能根据表达式的类型来推导变量类型,而不依赖于赋值。此外,还提到了Dev C++配置C++11支持的方法。
订阅专栏 解锁全文
1429

被折叠的 条评论
为什么被折叠?



