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?