何よりもまず、皆さんを私の考えのハイウェイに連れて行きましょう(簡単に言えば、私はこれらのことを想像しているだけです)
移動セマンティクス(r値参照)を使用するサードパーティのライブラリクラスを使用しているとします。その定義は次のとおりです。
class VeryHeavyObject {
VeryHeavyObject(const VeryHeavyObject& obj); // copy constructor
VeryHeavyObject& operator= (const VeryHeavyObject& obj); // copy operator
public:
VeryHeavyObject(); // constructor
VeryHeavyObject(VeryHeavyObject&& obj); // move constructor
VeryHeavyObject& operator= (VeryHeavyObject&& obj); // move operator
// ....
};
どうやら、作者はコピーのコストを本当に心配していて、VeryHeavyObject
すべてを強制的に移動することに決めました(もっと明らかに、彼は移動セマンティクスでクラスを設計する方法を知りません)。しかし、その後、私のコードのある時点で、のコピーが必要になりますVeryHeavyObject
。
さて、中心的な質問は 、ムーブコンストラクタとムーブ演算子だけでオブジェクトをコピーするにはどうすればよいですか?
PS:試しましたが、図書館の作者に連絡することはできません(彼は休暇中だと思います)。