std::experimental::ranges:: CommonReference
|
Défini dans l'en-tête
<experimental/ranges/concepts>
|
||
|
template
<
class
T,
class
U
>
concept
bool
CommonReference
=
|
(ranges TS) | |
Le concept
CommonReference<T, U>
spécifie que deux types
T
et
U
partagent un
type de référence commun
(calculé par
ranges::common_reference_t
) vers lequel les deux peuvent être convertis.
CommonReference<T, U>
est satisfait seulement si, étant données les expressions
t
et
u
telles que
decltype
(
(
t
)
)
est
T
et
decltype
(
(
u
)
)
est
U
,
-
ranges::
common_reference_t
<
T, U
>
(
t
)
est égal à
ranges::
common_reference_t
<
T, U
>
(
t
)
si et seulement si
test une expression préservant l'égalité ; et -
ranges::
common_reference_t
<
T, U
>
(
u
)
est égal à
ranges::
common_reference_t
<
T, U
>
(
u
)
si et seulement si
uest une expression préservant l'égalité.
En d'autres termes, la conversion vers le type de référence commun ne doit pas altérer la propriété de préservation de l'égalité de l'expression originale.
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.
Voir aussi
|
détermine le type de référence commun d'un ensemble de types
(modèle de classe) |
|
|
spécifie que deux types partagent un type commun
(concept) |
|
|
détermine le type commun d'un ensemble de types
(modèle de classe) |