Namespaces
Variants

C++ named requirements: RangeAdaptorClosureObject (since C++20)

From cppreference.net
C++ named requirements

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

Hilfsklassen-Template zur Definition eines Range-Adaptor-Closure-Objekts
(Klassen-Template)