次の例に示すように、最近、私はC++の式に割り当てに関する議論が続いている:C++ 11と代入演算子に左辺参照修飾子を使用する必要がありますか?
string s1, s2, s3;
(s1 + s2) = s3;
を、左側に参照を(左辺値への代入演算子を制限することが可能です)。代入演算子を次のように宣言すると、コンパイラClangは、互換性のない型のためにエラーメッセージでコードを拒否します。
auto operator=(const string& rhs) & -> string&;
auto operator=(string&& rhs) & -> string&;
私はこれを見たことがありません。代入演算子にlvalue参照修飾子を使用しない理由はありますか(ほとんどのコンパイラではサポートが失われています)。
1つの理由は、ほとんどのコンパイラが構文をまだサポートしていないことです。もう一つは、*大きな問題を解決しないということです。これは間違ってどのくらいの頻度で起こるのですか? –
私はそれが起こると思います。 'if(somefunc()= value)'もちろん、ほとんどのコンパイラはこれに対して警告を出しますが、すべてのケースで警告するわけではありません。 –