特定のリソースを管理するための単純な 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 つの参照を削除しすぎて、不要な一時オブジェクトが作成されるのではないかと思います。