std:: swappable, std:: swappable_with
|
ヘッダーで定義
<concepts>
|
||
|
template
<
class
T
>
concept swappable
=
|
(1) | (C++20以降) |
|
template
<
class
T,
class
U
>
concept swappable_with
=
|
(2) | (C++20以降) |
swappable<T>
コンセプトは、型
T
の左辺値が交換可能であることを指定します。
swappable_with<T, U>
コンセプトは、
T
と
U
でエンコードされた型と値カテゴリの式が
互いに交換可能であることを指定します。
swappable_with<T, U>
は、
ranges::
swap
(
t, u
)
の呼び出しによって
t
と
u
の値が交換される場合にのみ満たされます。
つまり、
t
と等しい別個のオブジェクト
t2
と
u
と等しい別個のオブジェクト
u2
が与えられたとき、
ranges::
swap
(
t, u
)
または
ranges::
swap
(
u, t
)
のいずれかを評価した後、
t2
が
u
と等しく、
u2
が
t
と等しくなります。
等価性保存
標準ライブラリコンセプトの requires expressions で宣言される式は、 equality-preserving であることが要求されます(特に明記されている場合を除く)。
参考文献
- C++23標準 (ISO/IEC 14882:2024):
-
-
18.4.9 コンセプト
swappable[concept.swappable]
-
18.4.9 コンセプト
- C++20標準 (ISO/IEC 14882:2020):
-
-
18.4.9 コンセプト
swappable[concept.swappable]
-
18.4.9 コンセプト