小编use*_*165的帖子

是否将rvalue作为参数传递给函数内的左值?

我有一个View和一个Shape类,其中View"拥有"它的Shape对象.我将其实现为unique_ptr的向量.在函数View :: add_shape(std :: unique_ptr && shape)中,我仍然需要在rvalue参数上使用std :: move来进行编译.为什么?(使用GCC 4.8)

#include <memory>
#include <vector>
using namespace std;

class Shape { };
class View
{
  vector<unique_ptr<Shape>> m_shapes;
  public:
  void add_shape(unique_ptr<Shape>&& shape)
  { 
    m_shapes.push_back(std::move(shape));// won't compile without the std::move
  }
};


int main()
{
  unique_ptr<Shape> ups(new Shape);
  View v;
  v.add_shape(std::move(ups));
}
Run Code Online (Sandbox Code Playgroud)

c++ rvalue c++11

5
推荐指数
1
解决办法
432
查看次数

标签 统计

c++ ×1

c++11 ×1

rvalue ×1