Namespaces
Variants

std:: indirect_binary_predicate

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
indirect_binary_predicate
(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 >

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

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

Das Konzept indirect_binary_predicate spezifiziert Anforderungen für Algorithmen, die binäre Prädikate als ihre Argumente aufrufen. Der Hauptunterschied zwischen diesem Konzept und std::predicate besteht darin, dass es auf die Typen angewendet wird, auf die I1 und I2 verweisen, anstatt 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 und zu Inkompatibilität mit Prädikat F & führte
definiert in Bezug auf /*indirect-value-t*/ < I >
um solche Projektionen korrekt zu behandeln
P2997R1 C++20 indirect_binary_predicate erforderte F & zur Erfüllung von predicate mit
std:: iter_common_reference_t < I >
erfordert nicht