首页 > 其他 > 详细

Decltye 随笔

时间:2019-05-18 14:57:16      阅读:125      评论:0      收藏:0      [点我收藏+]


类似于sizeof操作符,decltype也不需对其操作数求值。粗略来说,decltype(e)返回类型前,进行了如下推导:

1.若表达式e指向一个局部变量、命名空间作用域变量、静态成员变量或函数参数,
    那么返回类型即为该变量(或参数)的“声明类型”;
2.若e是一个左值(lvalue,即“可寻址值”),则decltype(e)将返回T&,其中T为e的类型;
3.若e是一个x值(xvalue),则返回值为T&&;
4.若e是一个纯右值(prvalue),则返回值为T。

const int i=0 ;     ///decltype(i) is const int

bool func(const Widget & w)//widget is a class
///decltype(w) is const Widget &
///decltype(func) is bool * (const Widget&)

struct Point{
  int x,y;
};
///decltype(Point::x ) is int

Widget x; ///decltype(w) is Widget

if(func(w)) ; ///decltype( func(w) )  is bool

vector<int> v;
if( v[0] == 0 ); /// ***decltype(v[0]) is int& ***

 

Decltye 随笔

原文:https://www.cnblogs.com/zhanghengyu/p/10885707.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!