更多C++学习笔记,关注 wx公众号:cpp读书笔记
Item 23: Understand std::move
and std::forward
为了了解std::move
和std::forward
,一种有用的方式是从它们不做什么这个角度来了解它们。std::move
不移动(move)任何东西,std::forward
也不转发(forward)任何东西。在运行时,它们不做任何事情。它们不产生任何可执行代码,一字节也没有。
std::move
和std::forward
仅仅是执行转换(cast)的函数(事实上是函数模板)。std::move
无条件的将它的实参转换为右值,而std::forward
只在特定情况满足时下进行转换。它们就是如此。这样的解释带来了一些新的问题,但是从根本上而言,这就是全部内容。
为了使这个故事更加的具体,这里是一个C++11的std::move
的示例实现。它并不完全满足标准细则,但是它