有时会遇到这种情况:希望从表达式的类型推断出要定义的变量的类型,但是不想用
该表达式的值初始化变量。为了满足这一要求, C++11 新标准引入了类型说明符
decltype,它的作用是选择并返回操作数的数据类型。在此过程中,编译器分析表达或
并得到它的类型,却不实际计算表达式的值。

1.基本使用

decltype (expression)

这里的括号是必不可少的,decltype的作用是“查询表达式的类型”,因此,上面语句的效果是,返回 expression 表达式的类型。注意,decltype 仅仅“查询”表达式的类型,并不会对表达式进行“求值”。

2.判别规则

  • 如果括号内是单的变量,推导类型为变量的类型

  • 如果括号内是函数调用,推导类型为函数的返回类型
  • 如果括号内是表达式,推导类型为表达式的结果类型
    • 如果表达式的结果是一个左值,结果类型为--对左值类型的引用

  • 如果表达式的结果是一个右值,结果类型为--右值类型

  • 如果括号内是一个加上括号的变量,结果是一个左值的表达式,所以是左值引用

当一个对象被用作右值的时候,用的是对象的值(即将这个对象的值赋值或者拷贝给其他空间);当一个对象被用作左值的时候,用的是对象的身份,就是在内存中的位置(即我们是对这个对象的空间里的东西进行操作)。需要右值的地方可以用左值替代,但不能把右值当成左值使用。
要注意:变量都是左值!右值就是一个单纯的数据!右值只能绑定到将要销毁的对象上!

decltype 类型指示符相关推荐

  1. C++11之后的decltype类型指示符

    C++11之后的decltype类型指示符 一.什么是decltype类型指示符 二.typeid运算符 三.使用decltype指示符 四.decltype和引用 五.decltype(auto) ...

  2. [C++]decltype类型指示符

    decltype类型指示符 decltype类型指示符:如果你希望从表达式的类型推断出要定义的变量的类型,但是却不想用表达式的值来初始化这个变量,那么你就可以使用decltype关键字,来说明这个变量 ...

  3. C++ decltype类型指示符

    decltype 说明符作用是选择并返回操作数的数据类型: const int ci=0,&pi=ci; decltype(ci) x = 0; //x的类型为 const int declt ...

  4. 关键字typedef、关键字using、auto类型说明符和declytpe类型指示符

    文章目录 类型别名 概念 关键字 typedef 别名声明 (alias declaration) using 指针.常量和类型别名 类型别名简化多维数组指针 auto类型说明符 概念 复合类型.常量 ...

  5. C++11之decltype类型推导(使用场景、推导四规则、cv限定符)

    系列文章 C++11之正则表达式(regex_match.regex_search.regex_replace) C++11之线程库(Thread.Mutex.atomic.lock_guard.同步 ...

  6. 二、C++11新特性:decltype类型推导

    目录 二.decltype类型推导 2.1. decltype decltype和auto的异同: 2.2.decltype的应用 ①.decltype和typedf/using合用 ②.deltyp ...

  7. C++ decltype类型说明符(尾置返回类型使用)

    转自https://blog.csdn.net/yhl_leo/article/details/50865552 1 基本语法 decltype 类型说明符生成指定表达式的类型.在此过程中,编译器分析 ...

  8. C++ decltype类型说明符

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50865552 1 基本语法 declt ...

  9. C++11 decltype类型推导详解

    decltype decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导. decltype 是"declare type" ...

最新文章

  1. 让Linux系统崩溃最快速的方法
  2. php7.0支持调用lua脚本
  3. android 使用浏览器打开指定页面
  4. Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight respo
  5. 有关使用sklearn LogisticRegression出现的 DeprecationWarning:
  6. 7-69 计算圆周率 (15 分)
  7. 计算机学科研究方向统计
  8. OCS2007R2升级LyncSrv2013 PART1:基础准备
  9. NLP任务增强:通过引入外部知识来提供额外信息
  10. 排序算法(一)--插入排序法折半插入排序法
  11. 利用钩子技术控制进程创建(附源代码)
  12. android多媒体框架学习 详解
  13. python描述器 触发事件_Python描述器引导(转)
  14. 计算机网络原理精讲学习笔记
  15. nekohtml和xpath
  16. java摇两个色子代码_[代码全屏查看]-html5+原生js实现的一个简易双色子游戏
  17. PID控制器及其参数整定
  18. 小鑫鑫的平均分(排序问题)
  19. 进程线程----转自林海峰
  20. 今晚7:30|AI TIME青年学者——英国伯明翰大学计算机学院讲师来啦!

热门文章

  1. python(2)带解析和要点
  2. SDNU-1183.纪念品分组
  3. 利用树莓派制作人体感应监控器
  4. 4_树莓派机载计算机的机器视觉样例教程——无名创新
  5. Qt之塔防游戏 c++(一)
  6. 【学术】集百家之长,有一家之言
  7. ipad和android平板应用程序,安卓平板相比iPad有哪些优势和劣势?
  8. mysql8.0字符集排序规则_MySQL 的字符集与排序规则
  9. 计算机科学第一课:学习要求及技巧
  10. 海洋学常用的 python 库