C++ 名前付き要件: MoveAssignable (C++11 以降)
From cppreference.com
rvalue 引数からインスタンスを代入できることを指定します。
[編集] 要件
型 T は、以下の場合に MoveAssignable を満たします。
以下を考えます。
-
t、型Tの変更可能な左辺値 (lvalue) 式。 -
rvは、型Tの rvalue 式です。
以下の式は有効であり、指定された効果を持つ必要があります。
| Expression | 戻り値の型 | 戻り値 | 事後条件 |
|---|---|---|---|
| t = rv | T&
|
t
|
t と rv が同じオブジェクトを参照しない場合、代入前の rv の値と t の値は等価になります。
|
[編集] 注意
この型要件を満たすために、ムーブ代入演算子を実装する必要はありません。値渡しまたは const Type& としてパラメータを取るコピー代入演算子は、rvalue 引数にバインドされます。
もし MoveAssignable クラスがムーブ代入演算子を実装している場合、rv の代入後の値が未指定であることを利用するために、ムーブセマンティクスを実装することもできます。
[編集] 関連項目
| (C++11)(C++11)(C++11) |
型がムーブ代入演算子を持つかをチェックする (クラステンプレート) |
| (C++20) |
型が別の型から代入可能であることを規定する (コンセプト) |