Auto 和 Decltye 的区别

/***auto 会去掉顶层const 和 &  而decltype 不会***/

//什么是顶层?
const int x=0, *ptr = x;
auto i = ptr; //i is int *
decltype(i) is const int *

int i = 42, *p = &i, &r = i;

decltype(i) x1 = 0;       //因为 i 为 int ,所以 x1 为int
auto x2 = i;              //因为 i 为 int ,所以 x2 为int

decltype(r) y1 = i;       //因为 r 为 int& ,所以 y1 为int&
auto y2 = r;              //因为 r 为 int& ,但auto会忽略引用,所以 y2 为int

decltype(r + 0) z1 = 0;   //因为 r + 0 为 int ,所以 z1 为int,
auto z2 = r + 0;          //因为 r + 0 为 int ,所以 z2 为int,

///对指针解引用之后decltype返回该类型指针的引用 , auto 只返回该类型
decltype(*p) h1 = i;      //这里 h1 是int&, 原因后面讲
auto h2 = *p;             // h2 为 int.

///另一个 decltype 返回与表达式形式相关 例如
int x=0;
decltype(x) is int
decltype( (x) ) is int&

decltype(auto) f1()
{
    int x=0;
    return (x);
}//返回值是int&

decltype(auto) f2()
{
    int x=0;
    return x;
}//返回值是int

///decltype 后面是表达式的时候 返回左值的引用
decltype(x = i) is int&//也就是说

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

时间: 05-18

Auto 和 Decltye 的区别的相关文章

auto和100%的区别

auto是随内容的高度而撑开的.100%是根据父级元素的高度来决定的.例如: <div style="height:100px;width:200px;"> <div style="height:auto;width:100px;float:left;">这个容器的高度是随里面的内容的高度而定</div> <div style="height:100%;width:100px;float:right;"&

SQL基础之XML

1.XML数据类型 在SQL Server中xml数据类型可以用来保存xml文档,这个文档即可以是完整的xml文档和xml片段,这样开发者就可以像使用int数据类型一样来使用xml数据类型.不过xml数据类型是一种特殊的数据类型,它主要存在以下限制. (1)除了string数据类型外,没有其他数据类型能够转换为xml数据类型.xml数量列不可用于group by语句中. (2)xml列不得成为主键或外键的一部分,xml列不能指定为唯一的,可应用于xml列的内置标量函数只有isnull和coale

兼容IE6/IE7/IE8/FireFox的css hack

.color{ background-color: #CC00FF; background-color: #FF00009; *background-color: #0066FF; _background-color: #009933; } **记住上面得样式解释为顺序是 ff.ie8.ie7.ie6 ** 显示的结果: 用火狐浏览,颜色是紫色 用 IE8 浏览,颜色是红色 用 IE7 浏览,颜色是蓝色 用 IE6 浏览,颜色是绿色 IE8 最新css hack: "" 例:"

一个二级菜单引发的血案

近期发现自己css不是很好,于是又看了一遍<css权威指南>.总感觉自己抓不到重点.弃疗中...于是看看其他书.然后学妹跟我说她的二级菜单写得很乱.当时我心里就在想二级菜单,有何难?自认为10分钟能搞定.跟她要效果图并很自大的说了句“等会儿,我写个简单的”.于是血案由此引发... 二级菜单要实现的原效果图是: (如发现雷同,不是巧合,是我从别的网页上截屏下来的 ~_~).既然说了简单,肯定效果没这么精美.但是至少基本效果和原理要实现. 10分钟过去了....15分钟过去了....这个“等会儿”

Flexbox 布局的正确使用方法

Flexbox 布局的正确使用方法 在项目中,我们还会大量使用到flexbox的新旧属性,但大多数人一般只会写新属性,旧属性交由autoprefixer处理,但其实完成同样功能的新旧属性表现形式却不尽相同.还有部分人只使用"万能"的flex:number属性为伸缩项目分配空间,但有些特殊情景却无法满足,此文为此梳理了flexbox的新旧属性区别和分配空间的原理,为大家用flexbox布局的项目通通渠. Flexbox兼容性 PC端的兼容性 移动端的兼容性 如上图,为了兼容IE10-11

局部变量的存储类别--自动变量与静态局部变量

1.自动变量  auto 动态的分配存储空间,在函数调用结束后,就自动释放这些存储空间. 2.静态局部变量 static 即在函数调用结束后继续保留原值,占有的存储单元并不释放,在下一次调用该函数时,该变量已经有值. (若没有声明为static类别,则默认为auto类别) 具体区别,通过下面这段代码来理解: 1 #include<stdio.h> 2 3 int fun(int x) 4 { 5 int a=0; 6 static int b=3; 7 a++; 8 b++; 9 return

margin:0 auto 与 text-align:center 的区别

基本概念:1.text-align: 属性规定元素中的文本的水平对齐方式;  该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式;一般情况下设置文本对齐方式的时候使用此属性.例如:div { text-align: left; }  //文本居左对齐.所有浏览器都支持 text-align 属性:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit".2.margin 是设置对象四边的外延边距,被称为外补丁或外边距.例如:

height:100%和height:auto的区别

一直不明白height:100%和height:auto的区别,最近在制作前端页面时都用了height:100%;overflow:hidden; ,可是有些浏览器出现莫名的奇妙的问题,但换成height:auto就好了,百度过这个问题,却一直没有细看. 今天又浮现了同样的问题,百度细看和群里的朋友指点,终于明白其中的道理,记录一下. height:auto,是指根据块内内容自动调节高度.height:100%,是指其相对父块高度而定义的高度,也就是按照离它最近且有定义高度的父层的高度来定义高度

wpf *和auto的区别

Auto 表示自动适应显示内容的宽度, 如自动适应文本的宽度,文本有多长,控件就显示多长. * 则表示按比例来分配宽度. <ColumnDefinition Width="3*" /> <ColumnDefinition Width="7*" /> 同样,行可以这样定义 <RowDefinition Height="3*" /> <RowDefinition Height="7*" /

Oracle也Mysql的区别

Mysql与Oracle区别总结如下:1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高.2. Oracle支持大并发,大访问量,是OLTP最好的工具.3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能.4.Oracle也Mysql操作上的一些区别①主键Mysql一般使用自动增长类型,在创