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)
Definiert in Header <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 >> ;
(seit C++20)

Das Konzept indirect_equivalence_relation spezifiziert Anforderungen für Algorithmen, die Äquivalenzrelationen als ihre Argumente aufrufen. Der Hauptunterschied zwischen diesem Konzept und std::equivalence_relation besteht darin, dass es auf die Typen angewendet wird, auf die I1 und I2 verweisen, und nicht auf I1 und I2 selbst.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
P2609R3 C++20 einige Anforderungen wurden definiert in Bezug auf std:: iter_value_t < I > &
was Projektionen falsch behandelte, was zu Inkompatibilität mit Äquivalenzrelation F & führte
definiert in Bezug auf /*indirect-value-t*/ < I >
um solche Projektionen korrekt zu behandeln
P2997R1 C++20 indirect_equivalence_relation erforderte, dass F & equivalence_relation mit
std:: iter_common_reference_t < I > erfüllt
erfordert nicht