std::swappable (since C++20), std::swappable_with (since C++20)
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