Недавно я продолжил обсуждение о назначениях выражениям в С++, как показано в следующем примере:
string s1, s2, s3;
(s1 + s2) = s3;
С С++ 11 можно ограничить оператор присваивания ссылками lvalue (слева). При объявлении операторов присваивания, как следует, компилятор Clang отклоняет код с сообщением об ошибке из-за несовместимых типов.
auto operator=(const string& rhs) & -> string&;
auto operator=(string&& rhs) & -> string&;
Я нигде не видел этого. Есть ли веская причина не использовать ссылочные квалификаторы lvalue для операторов присваивания (помимо отсутствия поддержки в большинстве компиляторов)?