◐ Shell
clean mode source ↗

std::optional<T>::swap - cppreference.com

提供: cppreference.com

<tbody> </tbody>

void swap( optional& other ) noexcept(/* see below */);

(C++17以上)

内容を other の内容と入れ替えます。

  • *thisother がどちらも値を格納していない場合、この関数は効果を持ちません。
  • *thisother のいずれか一方のみが値を格納している場合、値を格納しているオブジェクトを in、他方を un とすると、 un に格納されている値が std::move(*in) から直接初期化され、その後、 in->T::~T() によって行われたかのように、 in に格納されている値が破棄されます。 この呼び出し後、 in は値を格納していない状態になり、 un は値を格納している状態になります。
  • *thisother がどちらも値を格納している場合、 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>)

例外が投げられた場合、 *thisother の格納されている値の状態は、型 Tswap または型 T のムーブコンストラクタのどちらか呼ばれた方の例外安全性保証によって決まります。 *this および other の両方について、オブジェクトが値を格納している場合、そのオブジェクトは値を格納している状態のままになり、逆も同様です。

関連項目