decltype 类型指示符
有时会遇到这种情况:希望从表达式的类型推断出要定义的变量的类型,但是不想用
该表达式的值初始化变量。为了满足这一要求, C++11 新标准引入了类型说明符
decltype,它的作用是选择并返回操作数的数据类型。在此过程中,编译器分析表达或
并得到它的类型,却不实际计算表达式的值。
1.基本使用
decltype (expression)
这里的括号是必不可少的,decltype的作用是“查询表达式的类型”,因此,上面语句的效果是,返回 expression 表达式的类型。注意,decltype 仅仅“查询”表达式的类型,并不会对表达式进行“求值”。
2.判别规则
- 如果括号内是单的变量,推导类型为变量的类型
- 如果括号内是函数调用,推导类型为函数的返回类型
- 如果括号内是表达式,推导类型为表达式的结果类型
- 如果表达式的结果是一个左值,结果类型为--对左值类型的引用
- 如果表达式的结果是一个右值,结果类型为--右值类型
- 如果括号内是一个加上括号的变量,结果是一个左值的表达式,所以是左值引用
当一个对象被用作右值的时候,用的是对象的值(即将这个对象的值赋值或者拷贝给其他空间);当一个对象被用作左值的时候,用的是对象的身份,就是在内存中的位置(即我们是对这个对象的空间里的东西进行操作)。需要右值的地方可以用左值替代,但不能把右值当成左值使用。
要注意:变量都是左值!右值就是一个单纯的数据!右值只能绑定到将要销毁的对象上!
decltype 类型指示符相关推荐
- C++11之后的decltype类型指示符
C++11之后的decltype类型指示符 一.什么是decltype类型指示符 二.typeid运算符 三.使用decltype指示符 四.decltype和引用 五.decltype(auto) ...
- [C++]decltype类型指示符
decltype类型指示符 decltype类型指示符:如果你希望从表达式的类型推断出要定义的变量的类型,但是却不想用表达式的值来初始化这个变量,那么你就可以使用decltype关键字,来说明这个变量 ...
- C++ decltype类型指示符
decltype 说明符作用是选择并返回操作数的数据类型: const int ci=0,&pi=ci; decltype(ci) x = 0; //x的类型为 const int declt ...
- 关键字typedef、关键字using、auto类型说明符和declytpe类型指示符
文章目录 类型别名 概念 关键字 typedef 别名声明 (alias declaration) using 指针.常量和类型别名 类型别名简化多维数组指针 auto类型说明符 概念 复合类型.常量 ...
- C++11之decltype类型推导(使用场景、推导四规则、cv限定符)
系列文章 C++11之正则表达式(regex_match.regex_search.regex_replace) C++11之线程库(Thread.Mutex.atomic.lock_guard.同步 ...
- 二、C++11新特性:decltype类型推导
目录 二.decltype类型推导 2.1. decltype decltype和auto的异同: 2.2.decltype的应用 ①.decltype和typedf/using合用 ②.deltyp ...
- C++ decltype类型说明符(尾置返回类型使用)
转自https://blog.csdn.net/yhl_leo/article/details/50865552 1 基本语法 decltype 类型说明符生成指定表达式的类型.在此过程中,编译器分析 ...
- C++ decltype类型说明符
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50865552 1 基本语法 declt ...
- C++11 decltype类型推导详解
decltype decltype 是 C++11 新增的一个关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导. decltype 是"declare type" ...
最新文章
- 让Linux系统崩溃最快速的方法
- php7.0支持调用lua脚本
- android 使用浏览器打开指定页面
- Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight respo
- 有关使用sklearn LogisticRegression出现的 DeprecationWarning:
- 7-69 计算圆周率 (15 分)
- 计算机学科研究方向统计
- OCS2007R2升级LyncSrv2013 PART1:基础准备
- NLP任务增强:通过引入外部知识来提供额外信息
- 排序算法(一)--插入排序法折半插入排序法
- 利用钩子技术控制进程创建(附源代码)
- android多媒体框架学习 详解
- python描述器 触发事件_Python描述器引导(转)
- 计算机网络原理精讲学习笔记
- nekohtml和xpath
- java摇两个色子代码_[代码全屏查看]-html5+原生js实现的一个简易双色子游戏
- PID控制器及其参数整定
- 小鑫鑫的平均分(排序问题)
- 进程线程----转自林海峰
- 今晚7:30|AI TIME青年学者——英国伯明翰大学计算机学院讲师来啦!