次の方法で共有


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

参照

関連項目

<utility>

左辺値と右辺値