std:: swappable, std:: swappable_with
Defined in header
<concepts>
|
||
template
<
class
T
>
concept swappable
=
|
(1) | (since C++20) |
template
<
class
T,
class
U
>
concept swappable_with
=
|
(2) | (since C++20) |
The concept
swappable<T>
specifies that lvalues of type
T
are swappable.
The concept
swappable_with<T, U>
specifies that expressions of the type and value category encoded by
T
and
U
are swappable with each other.
swappable_with<T, U>
is satisfied only if a call to
ranges::
swap
(
t, u
)
exchanges the value of
t
and
u
, that is, given distinct objects
t2
equal to
t
and
u2
equal to
u
, after evaluating either
ranges::
swap
(
t, u
)
or
ranges::
swap
(
u, t
)
,
t2
is equal to
u
and
u2
is equal to
t
.
Equality preservation
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).
References
- C++23 standard (ISO/IEC 14882:2024):
-
-
18.4.9 Concept
swappable
[concept.swappable]
-
18.4.9 Concept
- C++20 standard (ISO/IEC 14882:2020):
-
-
18.4.9 Concept
swappable
[concept.swappable]
-
18.4.9 Concept