Должен ли я использовать ссылочные квалификаторы lvalue для операторов присваивания?

Недавно я следил за обсуждением присвоений выражений в C ++, как показано в следующем примере:

string s1, s2, s3;
(s1 + s2) = s3;

В C ++ 11 можно ограничить оператор присваивания ссылками lvalue (слева). При объявлении операторов присваивания следующим образом компилятор Clang отклоняет код с сообщением об ошибке из-за несовместимых типов.

auto operator=(const string& rhs) & -> string&;
auto operator=(string&& rhs) & -> string&;

Я нигде не видел этого. Есть ли веская причина не использовать ссылочные квалификаторы lvalue для операторов присваивания (помимо отсутствия поддержки в большинстве компиляторов)?

Ответы на вопрос(3)

Ваш ответ на вопрос