C++11从入门到入门

C++11之decltype

2018-06-14  本文已影响0人  Hard模式

decltype是一种新的操作符,用于获取表达式的数据类型。
使用方法和sizeof操作符类似。

int i;
decltype(i) x1; // 类型为int

const int bar();
decltype(bar()) x2; // 类型为int

const int&& foo();
decltype(foo()) x3; // 类型为const int&&

struct A { double x; };
const A* a = new A();
decltype(a->x) x4; // 类型为double
decltype( (a->x) ) x5; // 类型为const double&

decltype( e ) 返回类型前,进行了如下推导:

上述最后一个例子中,带括号的表达式(a->x)既非“标识符表达式”,亦非类访问表达式,因而未指向一个命名对象,而是一个左值,于x5便为“指向表达式类型的引用”,亦即const double&。

参考来源
wiki - decltype

上一篇下一篇

猜你喜欢

热点阅读