std::experimental::ranges::Swappable, std::experimental::ranges::SwappableWith
Defined in header <experimental/ranges/concepts>
|
||
template
<
class T >
concept bool Swappable =
|
(1) | (ranges TS) |
template
<
class T, class U >
concept bool SwappableWith =
|
(2) | (ranges TS) |
The concept Swappable<T>
specifies that lvalues of type T
are swappable.
The concept SwappableWith<T, U>
specifies that expressions of the type and value category encoded by T
and U
are swappable with each other. SwappableWith<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
An expression is equality preserving if it results in equal outputs given equal inputs.
- The inputs to an expression consist of its operands.
- The outputs of an expression consist of its result and all operands modified by the expression (if any).
Every expression required to be equality preserving is further required to be stable
Unless noted otherwise, every expression used in a requires-expression