[译]详解C++右值引用
C++0x标准出来很长时间了,引入了很多牛逼的特性 [1] 。其中一个便是右值引用,Thomas Becker的文章 [2] 很全面的介绍了这个特性,读后有如醍醐灌顶,翻译在此以便深入理解。 目录 概述 move语义 右值引用 强制move语义 右值引用是右值吗? move语义与编译器优化 完美转发:问题 完美转发:解决方案 Rvalue References And Exceptions The Case of the Implicit Move Acknowledgments and Further Reading 概述 右值引用是由C++0x标准引入c++的一个令人难以捉摸的特性。我曾偶尔听到过有c++领域的大牛这么说: 每次我想抓住右值引用的时候,它总能从我手里跑掉。 想把右值引用装进脑袋实在太难了。 我不得不教别人右值引用,这太可怕了。 右值引用恶心的地方在于,当你看到它的时候根本不知道它的存在有什么意义,它是用来解决什么问题的。所以我不会马上介绍什么是右值引用。更好的方式是从它将解决的问题入手,然后讲述右值引用是如何解决这些问题的。这样,右值引用的定义才会看起来合理和自然。 右值引用至少解决了这两个问题: 实现move语义 完美转发(Perfect forwarding) 如果你不懂这两个问题,别担心,后面会详细地介绍。我们会从move语义开始