Namensräume
Varianten
Aktionen

std::indirect_binary_predicate

Von cppreference.com
< cpp‎ | iterator
 
 
Iterator-Bibliothek
Iterator-Konzepte
Iterator-Primitive
Algorithmus-Konzepte und Hilfsprogramme
Indirekte aufrufbare Konzepte
indirect_binary_predicate
(C++20)
Gemeinsame Algorithmus-Anforderungen
(C++20)
(C++20)
(C++20)
Dienstprogramme
(C++20)
Iterator-Adapter
Bereichszugriff
(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 an Algorithmen, die binäre Prädikate als ihre Argumente aufrufen. Der wesentliche Unterschied 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.

[bearbeiten] Defect reports

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

DR angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
P2609R3 C++20 einige Anforderungen wurden in Bezug auf std::iter_value_t<I>& definiert
die Projektionen falsch behandelten, was zu Inkompatibilität mit dem 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, dass F& predicate mit
std::iter_common_reference_t<I>
erfordert nicht