Namespaces
Variants

std::experimental::ranges:: CommonReference

From cppreference.net
Défini dans l'en-tête <experimental/ranges/concepts>
template < class T, class U >

concept bool CommonReference =
Same < ranges:: common_reference_t < T, U > , ranges:: common_reference_t < U, T >> &&
ConvertibleTo < T, ranges:: common_reference_t < T, U >> &&

ConvertibleTo < U, ranges:: common_reference_t < T, U >> ;
(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 ,

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)