相关疑难解决方法(0)

我应该为赋值运算符使用左值引用限定符吗?

最近,我跟着讨论了C++中表达式的赋值,如下例所示:

string s1, s2, s3;
(s1 + s2) = s3;
Run Code Online (Sandbox Code Playgroud)

使用C++ 11,可以将赋值运算符限制为左值引用(在左侧).当声明赋值运算符如下时,由于类型不兼容,编译器Clang拒绝带有错误消息的代码.

auto operator=(const string& rhs) & -> string&;
auto operator=(string&& rhs) & -> string&;
Run Code Online (Sandbox Code Playgroud)

我没有在任何地方见过这个.是否有充分的理由不为赋值运算符使用左值引用限定符(除了在大多数编译器中缺少支持)?

c++ operator-overloading assignment-operator c++11

14
推荐指数
2
解决办法
1215
查看次数