私のクラスでは、メンバー変数としてstd::vector
などを使用します。メンバー変数には、独自の移動コンストラクタが付属しています。私はクラスの移動コンストラクタを明示的に宣言しておらず、暗黙のうちにほとんどの場合宣言されていません。可能であれば、一時オブジェクト内のメンバ変数は暗黙的に移動されていますか?
myクラスの暗黙のコピーコンストラクタまたは暗黙の代入演算子がrvalueで呼び出された場合、移動コンストラクタを持つメンバーはコピーまたは移動されますか?
移動した場合、移動可能なメンバーでクラスを使用するときに一時的な使用を避ける理由はありますか?
C++ 11を使用している場合は、C++ 03がコピーされると移動されます。 C++ 11では、すべての標準ライブラリコンテナクラスが移動セマンティクスを利用します。 –
コピーコンストラクタを明示的に宣言しても、これは当てはまりませんか?私が知る限り、const参照を右辺値に付して内容を割り当てると、メンバーの移動代入演算子は使用できません。 – gokturk
_ "ほとんどの場合、暗黙に宣言されていません" _型には移動セマンティクスがないため、メンバーを移動する方法はありません –