社区
C++ 语言
帖子详情
为什么左值可以传给右值引用
booirror
2015-04-05 02:49:48
template<class T>
func(T&& t)
{
....
}
然后如下调用:
int a = 4;
func(a);
非常ok,不报错,我真是纳闷,这是为什么
...全文
312
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++
左值
引用和
右值引用
这篇blog主要介绍一下
左值
和右值的概念及应用陷阱 1、
左值
和右值的概念
左值
是可以放在赋值号左边可以被赋值的值;
左值
必须要在内存中有实体; 右值当在赋值号右边取出值赋给其他变量的值;右值可以在内存也可以在...
C++系列第2:C++2.0(11+14+17+20)详解及多线程实战
右值引用
和move语义 31
右值引用
和move语义 32 转移
左值
34 12). constexpr 35 第2章 C++14新特性 36 Lambda 函数 36 类型推导 37 返回值类型推导(Return type deduction) 37 泛型lambda 39 [[弃用的]] [...
C++11中的
左值
引用和
右值引用
便捷方法:对表达式取地址,如果能,则为
左值
,否则为右值 举例: int a = 10 int b = 20 int *pFlag = &a vector<int> vctTemp vctTemp.push_back(1) string str1 = "hello" string str...
31_c++中的
左值
引用与
右值引用
1
左值
:可以取地址的,有名字的,临时的右值:不能取地址的,没有名字的,临时的举个栗: int a = b + c ,a 就是
左值
,其变量名为 a ,通过 &a 可
C++ 语言
64,653
社区成员
250,478
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章