std::experimental::optional<T>:: swap
From cppreference.net
<
cpp
|
experimental
|
optional
|
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 & > ( ) ) ) )
noexcept ( swap ( std:: declval < T & > ( ) , std:: declval < T & > ( ) ) ) )
例外がスローされた場合、
*
this
と
other
の保持する値の状態は、呼び出される
T
型の
swap
または
T
のムーブコンストラクタの例外安全性保証によって決定されます。
*
this
と
other
の両方について、オブジェクトが値を保持していた場合は値を保持したままとなり、その逆も同様です。
関連項目
|
std::swap
アルゴリズムを特殊化する
(関数) |