C++ benannte Anforderungen: Predicate
Die Predicate-Anforderungen beschreiben einen aufrufbaren Typ, der einen BooleanTestable-Wert zurückgibt.
Predicate wird typischerweise mit Algorithmen verwendet, die Eingabedaten (einzelne Objekte/Container) und ein Prädikat entgegennehmen, welches dann auf die Eingabedaten angewendet wird, um über den weiteren Handlungsverlauf zu entscheiden. Einige Beispiele für die Verwendung von Prädikaten in der C++-Standardbibliothek sind:
- std::all_of, std::any_of, std::none_of. Diese nehmen ein Array von Elementen und ein Prädikat als Eingabe entgegen. Das Prädikat wird auf einzelne Eingabeelemente angewendet, und es wird `true` zurückgegeben, wenn für alle/irgendwelche/keine Elemente das Prädikat `true` zurückgibt.
- std::find_if. Nimmt eine Sequenz von Elementen und ein Prädikat entgegen. Gibt das erste Element in der Sequenz zurück, für das das Prädikat einen Wert gleich true zurückgibt.
Die obige Beschreibung der Algorithmusfunktionalitäten ist vereinfacht und dient dazu, Predicate in einfachen Worten zu erklären. Für detaillierte Informationen siehe die einzelnen Seiten.
Mit anderen Worten, wenn ein Algorithmus einen Predicate pred und einen Iterator first entgegennimmt, sollte er das Objekt, auf das der Iterator first zeigt, mithilfe des gegebenen Prädikats über eine Konstruktion wie if (pred(*first)) { /*...*/ } testen können.
Das Funktionsobjekt pred darf keine nicht-konstante Funktion über den dereferenzierten Iterator aufrufen und muss ein `const`-Argument akzeptieren, wobei das Verhalten unabhängig davon ist, ob das Argument `const` oder nicht-`const` ist. Dieses Funktionsobjekt kann ein Funktionszeiger oder ein Objekt eines Typs mit einem geeigneten Funktionsaufrufoperator sein.
[bearbeiten] Anforderungen
| Dieser Abschnitt ist unvollständig Grund: Tatsächliche Anforderungen besser beschreiben |
[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 3031 | C++98 | Anforderungen an `const`-Werte waren unzureichend | Anforderungen verstärkt |
[bearbeiten] Siehe auch
| (C++20) |
gibt an, dass ein aufrufbarer Typ ein boolesches Prädikat ist (Konzept) |