Какой вариант использования для перегрузки функций-членов в ссылочных квалификаторах?
C ++ 11 позволяет перегружать функции-члены на основе ссылочных квалификаторов:
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
Я понимаю, как это работает, но какой вариант использования для этого?
я вижу этоN2819 предложено ограничить большинство операторов присваивания в стандартной библиотеке целевыми значениями (т.е. добавив&
"ссылки на классификаторы для операторов присваивания), ноэто было отклонено, Так что это был потенциальный вариант использования, когда комитет решил не соглашаться с этим. Итак, опять же, что является разумным вариантом использования?