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

Range adaptor closure objects are FunctionObjects that are callable via the pipe operator: if C is a range adaptor closure object and R is a range, these two expressions are equivalent:

Two range adaptor closure objects can be chained by operator| to produce another range adaptor closure object: if C and D are range adaptor closure objects, then C | D produces a range adaptor closure object E with the following properties:

d(c(R)) R | c | d E(R) R | E // R | (C | D)

Notes: operator() is unsupported for volatile-qualified or const-volatile-qualified version of range adaptor object closure types.

Objects whose type is the same as one of the following objects (ignoring cv-qualification) are range adaptor closure objects:

[edit] See also