名前空間
変種
操作

std::experimental::propagate_const<T>::swap

From cppreference.com
 
 
 
 
 
constexpr void swap( propagate_const & pt ) noexcept(/*下記参照*/);
(Library Fundamentals TS v2)

ラップされたポインタをptのポインタと交換します。プライベートデータメンバでラップされたポインタライクなオブジェクトをt_とすると、この関数はswap(t_, pt.t_)に相当します。ここで、swapのオーバーロード解決は、std::swapおよび通常の探索規則で見つかった宣言の中から行われます。これは、Swappableで説明されている通りです。

Tの左辺値がSwappableを満たさない場合、動作は未定義です。

[編集] パラメータ

pt - 交換対象の別のpropagate_constオブジェクト

[編集] 例外

noexcept 指定:  
noexcept(noexcept(swap(t_, pt.t_)))
例外指定における識別子swapの探索は、上記で説明されたオーバーロードを見つけ、メンバ関数自体は見つけません。これにより、例外指定はC++17のstd::is_nothrow_swappableと同等になります。
(Library Fundamentals TS v2)
noexcept 指定:  
(ライブラリ基本TS v3)

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 3413 LFTSv2 例外指定が無効な形式でした。 適切な形式になった
English 日本語 中文(简体) 中文(繁體)