Должен ли я использовать ссылочные квалификаторы 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 для операторов присваивания (помимо отсутствия поддержки в большинстве компиляторов)?