Namespaces
Variants

std:: indirect_equivalence_relation

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
indirect_equivalence_relation
(C++20)
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
Défini dans l'en-tête <iterator>
template < class F, class I1, class I2 = I1 >

concept indirect_equivalence_relation =
std:: indirectly_readable < I1 > &&
std:: indirectly_readable < I2 > &&
std:: copy_constructible < F > &&
std:: equivalence_relation
< F & , /*indirect-value-t*/ < I1 > , /*indirect-value-t*/ < I2 >> &&
std:: equivalence_relation
< F & , /*indirect-value-t*/ < I1 > , std:: iter_reference_t < I2 >> &&
std:: equivalence_relation
< F & , std:: iter_reference_t < I1 > , /*indirect-value-t*/ < I2 >> &&
std:: equivalence_relation

< F & , std:: iter_reference_t < I1 > , std:: iter_reference_t < I2 >> ;
(depuis C++20)

Le concept indirect_equivalence_relation spécifie les exigences pour les algorithmes qui invoquent des relations d'équivalence comme arguments. La différence principale entre ce concept et std::equivalence_relation est qu'il s'applique aux types référencés par I1 et I2 , plutôt qu'à I1 et I2 eux-mêmes.

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
P2609R3 C++20 certaines exigences étaient définies en termes de std:: iter_value_t < I > &
ce qui gérait incorrectement les projections, entraînant une incompatibilité avec la relation d'équivalence F &
défini en termes de /*indirect-value-t*/ < I >
pour gérer correctement ces projections
P2997R1 C++20 indirect_equivalence_relation exigeait que F & satisfasse equivalence_relation avec
std:: iter_common_reference_t < I >
n'exige pas