これは、私がこの情報のほとんどを入手した場所です: http://en.cppreference.com/w/cpp/language/move_constructor
どうやらこれらは、暗黙的に生成された移動コンストラクターが機能するための条件です。
- ユーザー宣言のコピー コンストラクターがない
- ユーザー宣言のコピー代入演算子はありません
- ユーザー宣言の移動代入演算子はありません
- ユーザーが宣言したデストラクタはありません
- 暗黙的に宣言された移動コンストラクターが削除済みとして定義されていません
- ユーザーが宣言した移動コンストラクターが存在する場合でも、キーワードを使用して暗黙的に宣言された移動コンストラクターの生成を強制することができます。
default
私の質問は次のとおりです。
- 暗黙の自動移動コンストラクターに頼るのは安全ですか?
- デフォルトのコピー コンストラクターの代わりに実際に機能するかどうかを確認するにはどうすればよいですか?
- 最後に、そして最も重要なこととして、それは良いアイデアであり、その理由は何ですか? それとも、常に自分で定義する方が良いですか?
私は3 つのルールに従い、デストラクタ、コピー アンド ムーブ コンストラクタ、コピー アンド ムーブ代入演算子を手動で作成する傾向がありますが、この暗黙的なものについては興味があります。