std::optional<T>::swap
提供: cppreference.com
<tbody>
</tbody>
void swap( optional& other ) noexcept(/* see below */); |
(C++17以上) | |
内容を other の内容と入れ替えます。
*thisとotherがどちらも値を格納していない場合、この関数は効果を持ちません。
*thisとotherのいずれか一方のみが値を格納している場合、値を格納しているオブジェクトをin、他方をunとすると、unに格納されている値がstd::move(*in)から直接初期化され、その後、in->T::~T()によって行われたかのように、inに格納されている値が破棄されます。 この呼び出し後、inは値を格納していない状態になり、unは値を格納している状態になります。
*thisとotherがどちらも値を格納している場合、using std::swap; swap(**this, *other)を呼ぶことによって格納されている値が交換されます。Tの左辺値は安全に Swappable でなければなりません。
引数
| other | - | 内容を交換する optional オブジェクト
|
戻り値
(なし)
例外
noexcept 指定:
noexcept(std::is_nothrow_move_constructible_v<T> && std::is_nothrow_swappable_v<T>)例外が投げられた場合、 *this と other の格納されている値の状態は、型 T の swap または型 T のムーブコンストラクタのどちらか呼ばれた方の例外安全性保証によって決まります。 *this および other の両方について、オブジェクトが値を格納している場合、そのオブジェクトは値を格納している状態のままになり、逆も同様です。
関連項目
(C++17) |
std::swap アルゴリズムの特殊化 (関数) |