C++ named requirements: RangeAdaptorClosureObject (since C++20)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Range-Adaptor-Closure-Objekte
sind
FunctionObject
s
, die über den Pipe-Operator aufrufbar sind: Wenn
C
ein Range-Adaptor-Closure-Objekt ist und
R
ein
range
ist, dann sind diese beiden Ausdrücke
äquivalent
:
C(R) R | C
Zwei Range-Adapter-Closure-Objekte können durch 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 , direkt-nicht-Listen-initialisiert von std:: forward < decltype ( ( C ) ) > ( C ) und std:: forward < decltype ( ( D ) ) > ( D ) entsprechend. Falls eine solche Initialisierung ungültig ist, ist C | D ebenfalls ungültig.
-
Seien
c
und
d
die gespeicherten Kopien (mit derselben Konstanz und Wertkategorie wie
E
), und
R
ein
range-Objekt, dann 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-Objekt-Closure-Typen nicht unterstützt.
Objekte, deren Typ mit einem der folgenden Objekte übereinstimmt (unter Ignorierung von CV-Qualifizierern), sind Range-Adapter-Closure-Objekte:
- unäre Range-Adapter-Objekte,
|
(seit C++23) |
- die Ergebnisse des Bindens nachfolgender Argumente durch Bereichsadapterobjekte, und
- die Ergebnisse des Verkettens zweier Bereichsadapter-Abschlussobjekte durch operator | .
Siehe auch
|
(C++23)
|
Hilfsklassen-Template zur Definition eines Range-Adaptor-Closure-Objekts
(Klassen-Template) |