std::experimental::ranges:: Swappable, std::experimental::ranges:: SwappableWith
|
Défini dans l'en-tête
<experimental/ranges/concepts>
|
||
|
template
<
class
T
>
concept
bool
Swappable
=
|
(1) | (ranges TS) |
|
template
<
class
T,
class
U
>
concept
bool
SwappableWith
=
|
(2) | (ranges TS) |
Le concept
Swappable<T>
spécifie que les lvalues de type
T
sont échangeables.
Le concept
SwappableWith<T, U>
spécifie que les expressions du type et de la catégorie de valeur encodés par
T
et
U
sont échangeables l'une avec l'autre.
SwappableWith<T, U>
n'est satisfait que si un appel à
ranges::
swap
(
t, u
)
échange la valeur de
t
et
u
, c'est-à-dire, étant donné des objets distincts
t2
égaux à
t
et
u2
égaux à
u
, après l'évaluation soit de
ranges::
swap
(
t, u
)
soit de
ranges::
swap
(
u, t
)
,
t2
est égal à
u
et
u2
est égal à
t
.
Préservation de l'égalité
Une expression est préservatrice d'égalité si elle produit des résultats égaux pour des entrées égales.
- Les entrées d'une expression consistent en ses opérandes.
- Les sorties d'une expression consistent en son résultat et tous les opérandes modifiés par l'expression (le cas échéant).
Toute expression devant préserver l'égalité doit en outre être stable : deux évaluations d'une telle expression avec les mêmes objets d'entrée doivent produire des sorties égales en l'absence de toute modification explicite intervenant entre-temps sur ces objets d'entrée.
Sauf indication contraire, toute expression utilisée dans une requires-expression doit être égalité-préservante et stable, et l'évaluation de l'expression ne peut modifier que ses opérandes non constants. Les opérandes constants ne doivent pas être modifiés.