允许成员函数的l值和r值引用限定符的目的是什么?

时间:2014-03-26 10:39:21

标签: c++ c++11 rvalue-reference

我主要是尝试了解此功能启用或促进的用途。我理解哪些电话在下面的地方:

struct Foo
{
   void bar() & {std::cout << "l-value"; }
   void bar() && {std::cout << "r-value"; }
};

Foo f;
f.bar();     // calls l-value version
Foo().bar(); // call r-value version

但这种区别的实际用途是什么?

1 个答案:

答案 0 :(得分:2)

rvalue方法可以安全地从调用者移动或以其他方式使调用者无效,因为之后将无法访问它(当然,它不能返回或存储引用)。因此,在某些操作的破坏性实现更有效的情况下,您可以仅在可以安全使用的地方为rvalues提供它。对于演员来说,也会考虑移动。