码迷,mamicode.com
首页 > 其他好文 > 详细

Decltye 随笔

时间:2019-05-18 15:34:25      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:eof   ***   code   类型   表达式   变量   函数参数   size   UNC   


类似于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 随笔

标签:eof   ***   code   类型   表达式   变量   函数参数   size   UNC   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!