社区
C++ 语言
帖子详情
为什么左值可以传给右值引用
booirror
2015-04-05 02:49:48
template<class T>
func(T&& t)
{
....
}
然后如下调用:
int a = 4;
func(a);
非常ok,不报错,我真是纳闷,这是为什么
...全文
383
6
打赏
收藏
为什么左值可以传给右值引用
template func(T&& t) { .... } 然后如下调用: int a = 4; func(a); 非常ok,不报错,我真是纳闷,这是为什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
哈利_蜘蛛侠
2015-04-06
打赏
举报
回复
你可以这么理解:如果不能将变量a直接作为你那个函数的实参的话,那么为了成功地调用那个函数,你就要生生地造出一个右值表达式,比如说a+0,而这显然是不方便的。所以int&& 是兼容int&的参数的。 当然,如果你另外定义了一个以int&为形参的重载函数的话,用a做实参时,就会调用int&为形参的重载函数版本了。
jiht594
2015-04-05
打赏
举报
回复
引用 4 楼 booirror 的回复:
[quote=引用 1 楼 jiht594 的回复:] 你哪里看到不能用左值的?
因为左值不能赋值给右值引用类型的变量[/quote] 这里有一个推导的过程. 看一下2楼连接, 4.3 模板参数类型推导 这节
booirror
2015-04-05
打赏
举报
回复
引用 1 楼 jiht594 的回复:
你哪里看到不能用左值的?
因为左值不能赋值给右值引用类型的变量
ri_aje
2015-04-05
打赏
举报
回复
这是为了照顾 perfect forwarding,最后推倒的类型是 int&,能够成功绑定。
jiht594
2015-04-05
打赏
举报
回复
http://zh.wikipedia.org/wiki/右值引用#.E5.BC.95.E7.94.A8.E5.A1.8C.E7.BC.A9.E8.A7.84.E5.88.99 4.2 引用塌缩规则 4.3
模板参数类型推导
4.4 完美转发的解决方案 6 右值引用的类型推导 6.1 auto关键字的类型完美转发 6.2 typedef的类型推导 6.3 decltype类型推导
jiht594
2015-04-05
打赏
举报
回复
你哪里看到不能用左值的?
浅谈C++
左值
引用和
右值引用
下面小编就为大家带来一篇浅谈C++
左值
引用和
右值引用
。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
左值
与右值的引用
这是关于C++
左值
与
右值引用
的课程视频,课程易于理解,可以很快掌握
深入理解c++
右值引用
1
引用类型可被引用的类型注记非常量
左值
常量
左值
非常量右值常量右值非常量
左值
引用// ncLeft1为非常量
左值
int ncLeft1 = 2;该引用类型本身为常量
左值
,右值,引用,以及源代码
左值
,右值,引用,以及源代码
左值
、右值、
左值
引用和
右值引用
文章目录
左值
和右值什么是
左值
和右值?举例说明
左值
引用和
右值引用
什么是
左值
引用和
右值引用
?
左值
和右值的转换右值变
左值
通过
右值引用
&&通过引用const &通过通用转换 forward
左值
和右值 什么是
左值
和右值? 按照我们常规理解
左值
就是在等号左边的值,右值是等号右边的值。如果你要这么理解,你就会发现遇到++i或i++这一类的语句你就开始混乱了! 其实
左值
和右值是我们习惯性的叫法,他的全拼应该是:
左值
是:locator value(可寻址的数据) 右值是:read value(不可
C++ 语言
65,209
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章