move
無条件に引数を右辺値参照にキャストし、型の移動が有効である場合に型が移動できることを通知します。
template<class Type>
typename remove_reference<Type>::type&& move(Type&& Arg) noexcept;
パラメーター
パラメーター |
説明 |
---|---|
Type |
Arg で渡された引数の型と、参照縮小規則から推論される型。 |
Arg |
キャストする引数。 Arg の型が右辺値参照として指定されているように見えますが、move では、左辺値参照を右辺値参照にバインドできるため、左辺値参照も受け取ります。 |
戻り値
型が参照型であるかどうかに関係なく、右辺値参照としての Arg。
解説
テンプレート引数 Type は明示的に指定されるものではなく、Arg で渡される値の型から推論されます。 Type の型は、参照縮小規則に従ってさらに調整されます。
move は引数を移動しません。 代わりに、その引数 (左辺値である可能性がある) を無条件に右辺値参照にキャストすることにより、型の移動が有効である場合、コンパイラは Arg に渡された値をコピーではなく移動できます。 型の移動が有効ではない場合は、代わりにコピーされます。
Arg で渡された値が左辺値である場合、つまり、名前を持つ場合や、そのアドレスを取得できる場合、移動が発生したときに無効になります。 移動した後、名前またはアドレスによって、Arg に渡された値を参照しないでください。
必要条件
ヘッダー: <utility>
名前空間: std