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)
Definido en el encabezado <iterator>
template < class F, class I1, class I2 = I1 >

concepto 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 >> ;
(desde C++20)

El concepto indirect_equivalence_relation especifica los requisitos para algoritmos que invocan relaciones de equivalencia como sus argumentos. La diferencia clave entre este concepto y std::equivalence_relation es que se aplica a los tipos a los que hacen referencia I1 y I2 , en lugar de a I1 y I2 mismos.

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
P2609R3 C++20 algunos requisitos se definieron en términos de std:: iter_value_t < I > &
lo cual manejó incorrectamente las proyecciones resultando en incompatibilidad con relación de equivalencia F &
definido en términos de /*indirect-value-t*/ < I >
para manejar correctamente dichas proyecciones
P2997R1 C++20 indirect_equivalence_relation requería que F & satisfaga equivalence_relation con
std:: iter_common_reference_t < I >
no requiere