std::experimental::propagate_const<T>::swap
From cppreference.com
< cpp | experimental | propagate const
| 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 指定:
noexcept(std::is_nothrow_swappable_v<T>) |
(ライブラリ基本TS v3) |
[編集] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 3413 | LFTSv2 | 例外指定が無効な形式でした。 | 適切な形式になった |