std::move和std::forward是C++0x中新增的标准库函数,分别用于实现移动语义和完美转发。
下面让我们分析一下这两个函数在gcc4.6中的具体实现。
预备知识
引用折叠规则:
X& + & => X&
X&& + & => X&
X& + && => X&
X&& + && => X&&
函数模板参数推导规则(右值引用参数部分):
当函数模板的模板参数为...
分类:
编程语言 时间:
2014-11-25 18:30:49
阅读次数:
1005
难得又写一次代码,距离上一次已经有半年左右了吧。虽然误打误撞进了数学系,但果然还是喜欢Coding的感觉。恢复训练连右值须为const引用,=须重载为成员函数都忘了。R.I.P.程序清单:Rational.h 1 /* 2 * Rational.h 3 * 4 * Created on: 2...
分类:
其他好文 时间:
2014-11-23 07:01:17
阅读次数:
225
参考资料: http://www.cnblogs.com/lebronjames/p/3614773.html 左值和右值定义: C++( 包括 C) 中所有的表达式和变量要么是左值,要么是右值。通俗的左值的定义就是非临时对象(可以取地址,有名字),那些可以在多条语句中使用的对象。所有的变量都满足这...
分类:
编程语言 时间:
2014-11-18 00:18:03
阅读次数:
266
#include
using namespace std;
int main()
{
int i = 9;
//i++ = 10;
++i = 10;
return 0;
}
/*
i++ 不可以作为左值;
++i 可以作为左值。
C++primer 中关于左值右值的说法:
变量和文字常量都有存储区,并且有相关的类型。区别在于变量是可寻址的(address...
分类:
其他好文 时间:
2014-11-16 17:24:58
阅读次数:
146
现在有这么几个结构体:typedef struct _info_head{ u_int src_ip; u_int dest_ip; u_int src_port; u_int dest_port;}info_head;typedef struct _pkt_info{ u_long sec; u....
分类:
编程语言 时间:
2014-11-13 07:00:01
阅读次数:
184
C++11 之后,C++的引用扩充为 非常量左值引用,常量左值引用,非常量右值引用,常量右值引用。什么是左值?什么是右值?左值、右值都是针对表达式而言的,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不存在的临时对象。一个区分左值、右值的便捷方法是:看能不能对表达式取地址,如果能,则...
分类:
编程语言 时间:
2014-11-12 16:18:38
阅读次数:
240
charch=‘a‘;char*cp=&ch;=++*cp++;第三句怎么解释?=++*cp++;应该作为左值非法(处于等号左边),作为右值(即放等号右边),该怎么解释???我已经看出来了,执行结果是这样:=++(*(cp++));系统由于后缀,先产生一个cp的拷贝,然后cp原值间接访问内容,然后将内容加1..
分类:
系统相关 时间:
2014-11-11 23:05:23
阅读次数:
171
一直想试着把自己理解和学习到的右值引用相关的技术细节整理并分享出来,希望能够对感兴趣的朋友提供帮助。右值引用是C++11标准中新增的一个特性。右值引用允许程序员可以忽略逻辑上不需要的拷贝;而且还可以用来支持实现完美转发的函数。它们都是实现更高效、更健壮的库。move语义先不展开具体右值引用定义。先说...
分类:
编程语言 时间:
2014-11-01 06:12:29
阅读次数:
318
左值:出现在赋值符左边的符号有时称为左值。
右值:出现在赋值符右边的符号有时称为右值。
编译器为每个变量分配一个地址(左值),这个地址在编译时可知,而且该变量在运行时一直保存于这个地址。相反,存储于变量中的值(它的右值)只有在运行时才可知。如果需要用到变量中存储的值,编译器就发出指令从指定地址读入变量值并将它存于寄存器。
可以看到,每个符号的地址在编译时可知。
对比一下几个式子:
//常...
分类:
编程语言 时间:
2014-10-31 22:17:23
阅读次数:
286
原文链接:http://blog.csdn.net/csdnji/article/details/169200 左值(lvalue)和右值(rvalue)是编程中两个非常基本的概念,但是也非常容易让人误解,看了很多文章,自我感觉真正将这个问题讲的很透彻的文章还没有看见,所以自告奋勇来尝试一下。如果....
分类:
其他好文 时间:
2014-10-21 14:59:18
阅读次数:
222