Jaki jest przypadek użycia do przeciążania funkcji składowych na kwalifikatorach referencyjnych?

C ++ 11 umożliwia przeciążanie funkcji członkowskich w oparciu o kwalifikatory referencyjne:

class Foo {
public:
  void f() &;   // for when *this is an lvalue
  void f() &&;  // for when *this is an rvalue
};

Foo obj;
obj.f();               // calls lvalue overload
std::move(obj).f();    // calls rvalue overload

Rozumiem, jak to działa, ale co to za sprawa?

Widzę toN2819 zaproponował ograniczenie większości operatorów przypisania w bibliotece standardowej do wartościowania celów (tj. dodanie „&„Odwołaj się do kwalifikatorów do operatorów przypisania”, aleto zostało odrzucone. Był to więc przypadek potencjalnego wykorzystania, w którym komisja postanowiła nie podejmować decyzji. Więc znowu, jaki jest rozsądny przypadek użycia?

questionAnswers(4)

yourAnswerToTheQuestion