我不明白什么时候应该使用std::move
当我应该让编译器优化时......例如:
using SerialBuffer = vector< unsigned char >;
// let compiler optimize it
SerialBuffer read( size_t size ) const
{
SerialBuffer buffer( size );
read( begin( buffer ), end( buffer ) );
// Return Value Optimization
return buffer;
}
// explicit move
SerialBuffer read( size_t size ) const
{
SerialBuffer buffer( size );
read( begin( buffer ), end( buffer ) );
return move( buffer );
}
我应该使用哪个?
只使用第一种方法:
Foo f()
{
Foo result;
mangle(result);
return result;
}
这会already允许使用移动构造函数(如果可用)。事实上,局部变量可以绑定到右值引用return
精确声明何时允许复制省略。
您的第二个版本主动禁止复制省略。第一个版本普遍更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)