我不明白以下几点:
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引用,我想我也可以传递它。为什么上述失败?
答案 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
或等效值。