相关疑难解决方法(0)

c ++ 11返回值优化还是移动?

我不明白何时应该使用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 );
}
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个?

c++ move return-value-optimization rvo c++11

166
推荐指数
4
解决办法
8万
查看次数

通过值返回带有已删除副本构造函数的对象是否合法?

通过值返回带有已删除副本构造函数的对象是否合法?例如,考虑具有std::unique_ptr成员的对象。大多数编译器在按值返回此类对象时不会抱怨,因为在大多数情况下,编译器甚至不会寻找副本构造函数。但是,由于标准不要求(N)RVO,因此可以说这些程序合法吗?是std::move在return语句为了在这些情况下,标准合规?

c++

4
推荐指数
1
解决办法
387
查看次数

标签 统计

c++ ×2

c++11 ×1

move ×1

return-value-optimization ×1

rvo ×1