Rvalue Reference Argument

时间:2018-02-13 15:06:50

标签: c++ rvalue-reference

我试图传递一个指向setter的唯一指针,编译器在“x = newval;”上抱怨说=运算符已被删除。当调用std :: move(newval)时,它工作正常。但在我看来,newval应该已经是一个右值引用类型。怎么回事?

class A {
    public:
    A(int* i) : x(i) {}
    std::unique_ptr<int> x;
    void set_ptr(std::unique_ptr<int>&& newval) { x = newval; }
};

See in Compiler Explorer

为什么编译器认为newval不是右值引用类型?

奖金问题:通过值传递unique_ptr以便移动构建副本会更好吗?

谢谢!

0 个答案:

没有答案