名前空間
変種
操作

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

From cppreference.com
 
 
 
 
 
void swap( optional& other ) noexcept(/* 以下参照 */);
(Library Fundamentals TS)

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

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

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

[編集] 関連項目

std::swap アルゴリズムを特殊化する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)