3

特定のリソースを管理するための単純な RAII ラッパーがあります。インターフェースは次のとおりです。

struct ResourceWrapper
{
    explicit ResourceWrapper(RESOURCE resource);
    ResourceWrapper(const ResourceWrapper& other);
    ResourceWrapper& operator=(const ResourceWrapper& other);
    ~ResourceWrapper();

    ResourceWrapper(ResourceWrapper&& other) = delete;
    ResourceWrapper& operator=(ResourceWrapper&& other) = delete;
};

stdここでの問題は、move 代入演算子を明示的に削除するとすぐに、このクラスをコンテナーとアルゴリズムで使用できなくなることです。そして明らかに、難しい方法を学んだばかりなので、それを削除するか、適切に実装する必要があります。

別の方法として、通常の代入演算子を使用してムーブ代入を実装することもできますが、それを適切に行う方法がわかりません。のようなものが必要だと思いますstd::remove_referenceか?1 つの参照を削除しすぎて、不要な一時オブジェクトが作成されるのではないかと思います。

4

1 に答える 1