C++ benannte Anforderungen: RangeAdaptorClosureObject (seit C++20)
Von cppreference.com
< cpp | benannte req
Range-Adapter-Closure-Objekte sind FunctionObjects, die über den Pipe-Operator aufrufbar sind: Wenn C ein Range-Adapter-Closure-Objekt und R ein Range ist, sind diese beiden Ausdrücke äquivalent
C(R) R | C
Zwei Range-Adapter-Closure-Objekte können über operator| verkettet werden, um ein weiteres Range-Adapter-Closure-Objekt zu erzeugen: Wenn C und D Range-Adapter-Closure-Objekte sind, dann erzeugt C | D ein Range-Adapter-Closure-Objekt E mit den folgenden Eigenschaften
- E speichert eine Kopie von C und D, die jeweils direkt-nicht-list-initialisiert sind aus std::forward<decltype((C))>(C) und std::forward<decltype((D))>(D). Wenn eine solche Initialisierung ungültig ist, ist auch C | D ungültig.
- Seien c und d die gespeicherten Kopien (mit derselben Constness und Wertkategorie wie E) und R ein
Range-Objekt, so sind die folgenden Ausdrücke äquivalent
d(c(R)) R | c | d E(R) R | E // R | (C | D)
Hinweise: operator() wird für volatile-qualifizierte oder const-volatile-qualifizierte Versionen von Range-Adapter-Closure-Typen nicht unterstützt.
Objekte, deren Typ gleich einem der folgenden Objekte ist (unter Ignorieren der cv-Qualifikation), sind Range-Adapter-Closure-Objekte
- unäre Range-Adapter-Objekte,
|
(seit C++23) |
- die Ergebnisse des Bindens von nachfolgenden Argumenten durch Range-Adapter-Objekte, und
- die Ergebnisse des Verkettens zweier Range-Adapter-Closure-Objekte durch operator|.
[bearbeiten] Siehe auch
| Hilfs-Basisklassen-Template zur Definition eines Range-Adaptor-Closure-Objekts (Klassen-Template) |