右值参考失去了它的本质

时间:2015-04-23 19:29:45

标签: c++

我不明白以下几点:

class Class {
  public:
  void operator=(string&&) {
      cout << "here";
  }
};

string func() {
    return "Paul";
}

int main()
{
    string&& rvalueref = func();

    Class obj;
    obj = rvalueref; <- error! Why isn't rvalueref a rvalue ref anymore?

    return 0;
}

因为我可以将prvalue绑定到rvalue引用,我想我也可以传递它。为什么上述失败?

2 个答案:

答案 0 :(得分:1)

我相信app/config/routing.yml就是您要使用的内容。 (在std::move中定义)
这样你就可以将左值变成右值。

<utility>

如果您想了解更多信息,可以找到有关移动语义和右值引用的信息here

答案 1 :(得分:1)

&#34; rvalue&#34; in&#34; rvalue reference&#34;正在谈论引用可以绑定到的内容。一旦绑定,它只是一个参考。绑定的右值引用和绑定的左值引用之间没有区别。

命名变量是左值。 (&#34;变量&#34;表示对象或引用)。要生成xvalue,即具有rvalue引用类型的表达式,您必须使用std::move或等效值。