使用xvalue的地点和时间?

Zac*_*ary 7 c++ reference xvalue

我读了标准xvalue.它与rvalue reference表达密切相关.但是在编程时,我真的找不到需要的场景xvalue.

例如:函数myClass&& f()返回一个rvalue reference.所以表达式f()是xvalue.但这有用吗?如何在编程中使用这种技术?

如果myClass g()定义了另一个函数,g()和之间有什么区别f()

我应该在什么情况下使用f() and xvalue而不是g() prvalue

jog*_*pan 8

在您的示例中,您定义了一个g返回prvalue的函数和一个f返回xvalue 的函数.

什么这些有共同的是,如果你传递给函数调用的结果,g()f()分别给另一个函数h(...),他们都将喜欢的重载h接受一个右值作为参数(如果有多个重载h).

和之间的区别是没有动态类型(即动态类型与静态(=声明)类型相同),而动态类型(可能与静态类型不同),换句话说,如果它被定义为返回对基类的右值引用,它将启用多态行为.(正是这个特性,xvalues与左值共享,这就是为什么xvalues和lvalues一起形成更大的glvalues组,而prvalues 只是 rvalues.)g()f()g()f()

对于用例的示例,我将仅提及此现有问题:是否存在通过右值引用返回有用的情况.