C++ benannte Anforderungen: BinaryPredicate
BinaryPredicate ist eine Menge von Anforderungen, die einige Standardbibliotheksfunktionen an die vom Benutzer bereitgestellten Argumente stellen.
Gegeben sei ein BinaryPredicate bin_pred und ein Paar von Iteratoren iter1 und iter2 oder ein Iterator iter und ein (möglicherweise const) Wert value, so müssen der Typ und die Wertkategorie des Ausdrucks bin_pred(*iter1, *iter2) oder, beziehungsweise, bin_pred(*iter, value), die BooleanTestable-Anforderungen erfüllen.
Darüber hinaus darf die Auswertung dieses Ausdrucks keine Nicht-const-Memberfunktionen der dereferenzierten Iteratoren aufrufen; syntaktisch muss der Prädikatargumente const-Objekte akzeptieren, mit demselben Verhalten, unabhängig davon, ob seine Argumente const oder nicht-const sind.
[bearbeiten] Anforderungen
- Predicate
- CopyConstructible (sofern nicht anders angegeben)
[bearbeiten] Standardbibliothek
Die folgenden Standardbibliotheksfunktionen erwarten ein BinaryPredicate, das kein Compare-Typ ist.
| entfernt aufeinanderfolgende doppelte Elemente (öffentliche Memberfunktion von std::forward_list<T,Allocator>) | |
| entfernt aufeinanderfolgende doppelte Elemente (öffentliche Memberfunktion von std::list<T,Allocator>) | |
| Findet die letzte Sequenz von Elementen in einem bestimmten Bereich (Funktionstempelat) | |
| Sucht nach einem der Elemente aus einer Menge von Elementen (Funktionstempelat) | |
| Findet die ersten beiden benachbarten Elemente, die gleich sind (oder eine gegebene Bedingung erfüllen) (Funktionstempelat) | |
| Findet die erste Position, an der sich zwei Bereiche unterscheiden (Funktionstempelat) | |
| Bestimmt, ob zwei Elementmengen gleich sind (Funktionstempelat) | |
| (C++11) |
bestimmt, ob eine Sequenz eine Permutation einer anderen Sequenz ist (Funktionsvorlage) |
| Sucht nach dem ersten Vorkommen eines Elementbereichs (Funktionstempelat) | |
| Sucht nach dem ersten Vorkommen einer Anzahl aufeinanderfolgender Kopien eines Elements in einem Bereich (Funktionstempelat) | |
| Entfernt aufeinanderfolgende doppelte Elemente in einem Bereich (Funktionstemplate) | |
| Erstellt eine Kopie eines Bereichs von Elementen, die keine aufeinanderfolgenden Duplikate enthält (Funktionstemplate) | |
| (in C++17 veraltet)(in C++20 entfernt) |
konstruiert ein benutzerdefiniertes std::binary_negate-Objekt (Funktionsvorlage) |
| (C++11) |
Sammlung eindeutiger Schlüssel, gehasht nach Schlüsseln (Klassenvorlage) |
| (C++11) |
Sammlung von Schlüssel-Wert-Paaren, gehasht nach Schlüsseln, Schlüssel sind eindeutig (Klassenvorlage) |
| (C++11) |
Sammlung von Schlüsseln, gehasht nach Schlüsseln (Klassenvorlage) |
| (C++11) |
Sammlung von Schlüssel-Wert-Paaren, gehasht nach Schlüsseln (Klassenvorlage) |
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2114 (P2167R3) |
C++98 | Konvertierbarkeit von Rückgabetypen nach bool war zu schwach um die Erwartungen der Implementierungen widerzuspiegeln |
Anforderungen verstärkt |
| LWG 3031 | C++98 | Anforderungen an const-Werte waren unzureichend |
Anforderungen verstärkt |