编程语言
首页 > 编程语言> > C++ decltype类型推导

C++ decltype类型推导

作者:互联网

1、decltype介绍

decltype(declare type,声明类型)为C++11 新增的关键字,和auto功能一样,用于在编译期间进行自动类型推导。
auto和decltype关键字都可以自动推导出变量的类型,但他们的用法是有区别的:

auto varname = value;
decltype(exp) varname = value;

auto会根据=右边的初始值value推导出变量的类型,而decltype会根据exp表达式推导出变量的类型,跟=右边的value没有关系。
此外,auto会要求变量必须初始化,而decltype不要求;
PS:exp 注意事项

原则上讲,exp 就是一个普通的表达式,它可以是任意复杂的形式,但是我们必须要保证 exp 的结果是有类型的,不能是 void;

举例:

int a = 0;
decltype(a) b = 1;  //b 被推导成了 int
decltype(10.8) x = 5.5;  //x 被推导成了 double
decltype(x + 100) y;  //y 被推导成了 double

2、decltype推导规则

使用 decltype(exp) 获取类型时,编译器将根据以下三条规则得出结果:

左值是指那些在表达式执行结束后依然存在的数据,也就是持久性的数据;右值是指那些在表达式执行结束后不再存在的数据,也就是临时性的数据。有一种很简单的方法来区分左值和右值,对表达式取地址,如果编译器不报错就为左值,否则为右值。

参考:http://c.biancheng.net/view/7151.html

标签:decltype,推导,auto,C++,exp,类型,表达式
来源: https://www.cnblogs.com/whiteBear/p/15779922.html