Namespaces
Variants

std::experimental::optional<T>:: swap

From cppreference.net
void swap ( optional & other ) noexcept ( /* see below */ ) ;
(ライブラリファンダメンタルTS)

内容を other の内容と交換します。

  • * this other の両方が値を保持していない場合、この関数は何も効果を持ちません。
  • this other のうち一方のみが値を保持している場合(このオブジェクトを in 、もう一方を un と呼ぶ)、 un の保持値は 直接初期化 によって std :: move ( * in ) から初期化され、その後 in の保持値は in. val - > T :: ~T ( ) によって破棄される。この呼び出し後、 in は値を保持せず、 un は値を保持する。
  • * this other の両方が値を保持している場合、保持されている値は using std:: swap ; swap ( ** this, * other ) を呼び出すことで交換されます。 T の左辺値は Swappable 要件を満たす必要があります。

目次

パラメータ

その他 - 内容を交換する optional オブジェクト

戻り値

(なし)

例外

noexcept 仕様:
noexcept ( std:: is_nothrow_move_constructible < T > :: value &&
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )

例外がスローされた場合、 * this other の保持する値の状態は、呼び出される T 型の swap または T のムーブコンストラクタの例外安全性保証によって決定されます。 * this other の両方について、オブジェクトが値を保持していた場合は値を保持したままとなり、その逆も同様です。

関連項目

std::swap アルゴリズムを特殊化する
(関数)