std::experimental::ranges:: Swappable, std::experimental::ranges:: SwappableWith
|
Definido en el encabezado
<experimental/ranges/concepts>
|
||
|
template
<
class
T
>
concept
bool
Swappable
=
|
(1) | (ranges TS) |
|
template
<
class
T,
class
U
>
concept
bool
SwappableWith
=
|
(2) | (ranges TS) |
El concepto
Swappable<T>
especifica que los lvalues de tipo
T
son intercambiables.
El concepto
SwappableWith<T, U>
especifica que las expresiones del tipo y categoría de valor codificadas por
T
y
U
son intercambiables entre sí.
SwappableWith<T, U>
se satisface únicamente si una llamada a
ranges::
swap
(
t, u
)
intercambia el valor de
t
y
u
, es decir, dados objetos distintos
t2
igual a
t
y
u2
igual a
u
, después de evaluar ya sea
ranges::
swap
(
t, u
)
o
ranges::
swap
(
u, t
)
,
t2
es igual a
u
y
u2
es igual a
t
.
Preservación de la igualdad
Una expresión es equality preserving si produce salidas iguales dadas entradas iguales.
- Las entradas de una expresión consisten en sus operandos.
- Las salidas de una expresión consisten en su resultado y todos los operandos modificados por la expresión (si los hay).
Toda expresión que deba preservar la igualdad debe además ser estable : dos evaluaciones de dicha expresión con los mismos objetos de entrada deben producir salidas iguales, a menos que exista una modificación explícita e intermedia de esos objetos de entrada.
A menos que se indique lo contrario, toda expresión utilizada en una requires-expression debe ser de preservación de igualdad y estable, y la evaluación de la expresión solo puede modificar sus operandos no constantes. Los operandos que son constantes no deben modificarse.