/***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

Auto 和 Decltye 的区别相关推荐

  1. stdmove 跟 左键引用 区别_C++ auto和decltype的区别

    通过<C++ auto>和<C++ decltype>两节的学习,相信大家已经掌握了 auto 和 decltype 的语法规则以及使用场景,这节我们将 auto 和 decl ...

  2. auto和decltype的区别

    C++ auto和decltype关键字 C++11新标准引入了auto和declty这两个类型推断关键字,auto的推断是基本上针对赋值类型,而decltype则常常希望重表达式中推断出要定义变量的 ...

  3. overflow: auto与overflow:hidden区别

    overflow: auto;将看不见被隐藏的,以滚动条的形式进行展示. overflow:hidden;直接将多余的隐藏,想看也看不了.

  4. C++ for(auto x : str) 和 for(auto x : str)的区别

    For(auto x : str)是利用x生成str中每一个值的复制,对x的赋值不会影响到原容器. For(auto &x : str)是利用x生成str中每一个值的引用,对x的操作会影响到原 ...

  5. css属性width默认值width: auto与width: 100%区别

    width: auto 子元素(包括content+padding+border+margin)撑满整个父元素的content区域. 子元素有margin.border.padding时,会减去子元素 ...

  6. html value一点就消失,input输入框内文字消失用value和placeholder有什么区别

    Placeholder(占位符) 是 HTML5 新增的一个 HTML 属性,用来对可输入字段的期望值提供提示信息,目前已经得到主流浏览器的广泛支持,使用方式非常简单: 代码效果图片:html> ...

  7. 《C++ Primer 第五版》第二章(第5小节)——using和typedef,auto和decltype总结

    1.using和typedef(作用:定义类型别名) 1)typedef和using都可以用来定义一个类型别名,二者在类型别名上定义没有区别.只是需要注意的是类型和类型别名的顺序,使用typedef定 ...

  8. C++ for循环中有冒号,for(auto c:s)与for(auto c:s)的用法

    常规思路,我们想要输出一个数组的全部元素时,往往采用以下的方法: //随机定义的数组 int array[10] = { 54, 23, 78, 9, 15, 18, 63, 33, 87, 66 } ...

  9. 那些常见的C++、Qt基础面试题

    前言 又到了金三银四的季节,每年这个时候都是跳槽的高峰期,在整理电脑资料的过程中发现一些之前记录的面试过程中最常提到的C++和Qt相关问题,其实都是些很基础的知识点,但是在面试过程中出镜率非常高.总结 ...

最新文章

  1. PC问题-VMware Workstation出现“文件锁定失败”
  2. ios滚动条影响父页面 vue_父元素设置overflow:scroll时vuedraggable组件出现奇怪效果的解决方案...
  3. php stripslashes 去除反斜线
  4. js三元判断html,JS 三元条件运算符
  5. java小项目图书管理系统_Java小项目迷你图书管理系统
  6. 一个模型搞定十大自然语言任务:NLP全能选手来了 | 论文+代码
  7. Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装 1
  8. 无线电波在介质中的传播速度计算公式和印刷电路板(PCB)的特性阻抗与特性阻抗控制
  9. Windows小技巧:巧用CMD命令设置定时关机
  10. 新闻叙事与文学影视叙事的区别
  11. dlopen failed: empty/missing DT_HASH in quot;libx.soquot; (built with --hash-style=gnu?)
  12. 【电路理论】2-6 线性电阻电路解答的存在性与惟一性定理
  13. 小米手机miui12稳定版蓝牙时断不稳定的解决办法。
  14. 游戏辅助制作核心--植物大战僵尸逆向之自动捡取阳光(二)
  15. 【OSATE学习笔记】AADL语法介绍(二)软件类构建详细介绍
  16. 习题 5.14 输入n个字符串,把其中以字母A打头的字符串输出。
  17. Linux:驱动之自动创建字符设备的设备文件(未完)
  18. 开源BI工具3:dataease
  19. 3DMark Vantage
  20. 有一种难过,叫做你没有使用过网上订货系统!

热门文章

  1. 解决 sublime text 3 there are no packages available for installation 错误
  2. [Codeforces677B]Vanya and Food Processor(模拟,数学)
  3. AJAX - 创建XMLHttpRequest 对象
  4. [转]本地图片预览二三事
  5. centos7的telnet不通已经关闭防火墙,打开阿里云端口仍然ping不通的解决办法
  6. 方便好用的接口协作工具
  7. python批量执行多个py文件_Python实现批量执行同目录下的py文件方法
  8. 2021年提升效率的7个新vue实战技巧!
  9. ssm框架下web项目,web.xml配置文件的作用(详解)
  10. 汇编语言:程序如下,编写code段中的代码,将a段和b段中的数据一次相加,结果放到c段中