C++标准库之右值引用相关:引用折叠
引用折叠
引用折叠出现的情况在于范型编程时。
void f(T&& param);
f(10);
int x = 10;
f(x);这两者都可运行成功。
由于存在T&&这种未定的引用类型,当它作为参数时,有可能被一个左值引用或右值引用的参数初始化,这是经过类型推导的T&&类型,相比右值引用(&&)会发生类型的变化,这种变化就称为引用折叠。(《深入应用C++11-代码优化与工程级应用》 --- 祁宇 P68 )
引用折叠的规则如下(配合@jun-jun的答案)[和上一段的出处一样]:1.所有右值引用折叠到右值引用上仍然是一个右值引用。(A&& && 变成 A&&)2.所有的其他引用类型之间的折叠都将变成左值引用。 (A& & 变成 A&; A& && 变成 A&; A&& & 变成 A&)
作者:知乎用户 链接:https://www.zhihu.com/question/40346748/answer/88672920 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
右右得右,右左得左
C++标准库之右值引用相关:引用折叠的更多相关文章
- C++标准库之右值引用与交付语义
		C++标准委员会不应该制定一条阻止程序员拿起枪朝自己的脚丫子开火的规则. 右值引用(rvalue).交付语义(move) 最近阅读<C++标准库第二版>,看到第二章介绍C++11新特性3. ... 
- c/c++ 拷贝控制 右值与const引用
		拷贝控制 右值与const引用 背景:当一个函数的返回值是自定义类型时,调用侧用什么类型接收?? 1,如果自定义类型的拷贝构造函数的参数用const修饰了:可以用下面的方式接收. Test t2 = ... 
- 【转】C++11 标准新特性: 右值引用与转移语义
		VS2013出来了,对于C++来说,最大的改变莫过于对于C++11新特性的支持,在网上搜了一下C++11的介绍,发现这篇文章非常不错,分享给大家同时自己作为存档. 原文地址:http://www.ib ... 
- C++11 标准新特性: 右值引用与转移语义
		文章出处:https://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/ 新特性的目的 右值引用 (Rvalue Referene) ... 
- C++11 的右值引用
		作者:Tinro链接:https://www.zhihu.com/question/22111546/answer/30801982来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ... 
- C++11标准之右值引用(rvalue reference)
		1.右值引用引入的背景 临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题.但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了Copy Elision.RVO(包 ... 
- C++右值引用浅析
		一直想试着把自己理解和学习到的右值引用相关的技术细节整理并分享出来,希望能够对感兴趣的朋友提供帮助. 右值引用是C++11标准中新增的一个特性.右值引用允许程序员可以忽略逻辑上不需要的拷贝:而且还可以 ... 
- 【C/C++开发】C++11:右值引用和转发型引用
		右值引用 为了解决移动语义及完美转发问题,C++11标准引入了右值引用(rvalue reference)这一重要的新概念.右值引用采用T&&这一语法形式,比传统的引用T&(如 ... 
- C++左值引用与右值引用
		本文翻译自:https://docs.microsoft.com/en-us/cpp/cpp/references-cpp?view=vs-2019 引用,类似于指针,用于存储一个位于内存某处的对象的 ... 
随机推荐
- 学生月上网时间分布-TestData
			Python机器学习应用 | [第一周]无监督学习 - weixin_42906066的博客 - CSDN博客https://blog.csdn.net/weixin_42906066/article ... 
- 查询Oracle版本
			服务器端 Oracle: 1)select* from v$version; 2)select * from product_component_version; 3)set serveroutput ... 
- logback kafkaAppender输出日志到kafka
			官网地址https://github.com/danielwegener/logback-kafka-appender 本文以spring boot项目为基础,更多的信息,请参考官网 https:// ... 
- crontab,定时任务执行找不到库or  shell可执行,crontab 定时任务下就不能执行,tensorflow,ImportError: libcuda.so.1: cannot open shared object file: No such file or directory
			在线上启动一个定时任务,但是起来查看,发现任务执行找不到库,报cuda错误: ImportError: libcuda.so.1: cannot open shared object file: No ... 
- 【深入Java虚拟机(1)】:Java内存区域与内存溢出
			原文出处: 兰亭风雨 内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域.Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器.Jav ... 
- Tomcat配置https协议访问
			Tomcat9配置https协议访问: https://blog.csdn.net/weixin_42273374/article/details/81010203 配置Tomcat使用https协议 ... 
- 启动tomcat时报错:http-nio-8080-exec-10
			启动Tomcat后访问 http://192.168.199.10:8080/jpress-web-newest 网页,查看日志有报错 问题原因:Java的内存溢出 故障现象为: cat /app ... 
- k8s环境清理
			每一种方法 #!/bin/shdocker rm -f $(docker ps -qa)docker volume rm $(docker volume ls -q)cleanupdirs=" ... 
- npm 离线安装依赖
			现实场景:一台自己的电脑可以连外网,一台开发机不能连网,开发机需要安装node_modules 依赖解决办法: npm 安装依赖分为两种,一是 -g 这种是安装在全局环境的,只有在电脑中 ... 
- select2的设置选中
			select2插件设置选中值并显示的问题 在select2中,要想设置指定值为选中状态并显示: $("#select2_Id").val("XXXXX").se ... 
