std::experimental::propagate_const<T>:: swap
From cppreference.net
<
cpp
|
experimental
|
propagate const
|
constexpr
void
swap
(
propagate_const
&
pt
)
noexcept
(
/* see below */
)
;
|
(ライブラリ基盤仕様 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
と等価となる。
|
(ライブラリ基盤仕様 TS v2) |
|
noexcept
指定子:
noexcept
(
std::
is_nothrow_swappable_v
<
T
>
)
|
(ライブラリ基盤仕様 TS v3) |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 3413 | LFTSv2 | 例外仕様が不正な形式であった | 正しい形式に修正された |