文字列クラスがあります。一部の演算子は参照を返し、他の演算子は値を返します。値を返すものだけが、右辺値コピー コンストラクターまたは右辺値代入演算子を利用できます。
右辺値への参照で右辺値演算子を呼び出したいと思います。
これらを考えると:
String(const TCHAR* sz);
String(const String& s);
String& operator+=(const TCHAR* sz);
String& operator=(String&& r);
そして、このコード:
String x;
x = (String("fred") += "foo");
コピー コンストラクター、+= 演算子を呼び出しますが、次に COPY CONSTRUCTER を再度呼び出します。右辺値代入演算子を呼び出したい!
私はこれを追加しました:
String(String&& r)
そして、それは違いはありません。
編集: += 演算子に値を返すようにすると、右辺値代入演算子が呼び出されることを確認しました。私は多くのパフォーマンステストを行いましたが、これを行うとすべてが大幅に遅くなります。