std::experimental::ranges:: Common
|
Défini dans l'en-tête
<experimental/ranges/concepts>
|
||
|
template
<
class
T,
class
U
>
concept
bool
Common
=
|
(ranges TS) | |
Le concept
Common<T, U>
spécifie que deux types
T
et
U
partagent un
type commun
(tel que calculé par
ranges::common_type_t
) vers lequel les deux peuvent être convertis.
Common<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_type_t
<
T, U
>
(
t
)
est égal à
ranges::
common_type_t
<
T, U
>
(
t
)
si et seulement si
test une expression préservant l'égalité ; et -
ranges::
common_type_t
<
T, U
>
(
u
)
est égal à
ranges::
common_type_t
<
T, U
>
(
u
)
si et seulement si
uest une expression préservant l'égalité.
En d'autres termes, la conversion vers le type 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éterminer le type commun d'un ensemble de types
(modèle de classe) |
|
|
déterminer le type de référence commun d'un ensemble de types
(modèle de classe) |
|
|
spécifie que deux types partagent un type de référence commun
(concept) |