社区
C++ 语言
帖子详情
为什么左值可以传给右值引用
booirror
2015-04-05 02:49:48
template<class T>
func(T&& t)
{
....
}
然后如下调用:
int a = 4;
func(a);
非常ok,不报错,我真是纳闷,这是为什么
...全文
358
6
打赏
收藏
为什么左值可以传给右值引用
template func(T&& t) { .... } 然后如下调用: int a = 4; func(a); 非常ok,不报错,我真是纳闷,这是为什么
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
你哪里看到不能用左值的?
31_c++中的
左值
引用与
右值引用
1
左值
:可以取地址的,有名字的,临时的右值:不能取地址的,没有名字的,临时的举个栗: int a = b + c ,a 就是
左值
,其变量名为 a ,通过 &a 可
浅谈C++
左值
引用和
右值引用
下面小编就为大家带来一篇浅谈C++
左值
引用和
右值引用
。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
左值
与右值的引用
这是关于C++
左值
与
右值引用
的课程视频,课程易于理解,可以很快掌握
非常量引用的初始值必须为
左值
的问题
非常量引用的初始值必须为
左值
的问题 C++ 11中引入的一个非常重要的概念就是
右值引用
。理解
右值引用
是学习“移动语义”(move semantics)的基础。而要理解
右值引用
,就必须先区分
左值
与右值。 对
左值
和右值的一个最常见的误解是:等号左边的就是
左值
,等号右边的就是右值。
深入理解c++
右值引用
1
引用类型可被引用的类型注记非常量
左值
常量
左值
非常量右值常量右值非常量
左值
引用// ncLeft1为非常量
左值
int ncLeft1 = 2;该引用类型本身为常量
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章