Namespaces
Variants

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

From cppreference.net
C++ named requirements

Los objetos de cierre de adaptador de rango son FunctionObject s que pueden invocarse mediante el operador de tubería: si C es un objeto de cierre de adaptador de rango y R es un range , estas dos expresiones son equivalentes :

C(R)
R | C

Dos objetos de cierre de adaptador de rango pueden encadenarse mediante operator | para producir otro objeto de cierre de adaptador de rango: si C y D son objetos de cierre de adaptador de rango, entonces C | D produce un objeto de cierre de adaptador de rango E con las siguientes propiedades:

  • E almacena una copia de C y D , inicializados por direct-non-list-initialization desde std:: forward < decltype ( ( C ) ) > ( C ) y std:: forward < decltype ( ( D ) ) > ( D ) respectivamente. Si dicha inicialización no es válida, C | D tampoco es válido.
  • Sean c y d las copias almacenadas (con la misma constancia y categoría de valor que E ), y R un objeto range , las siguientes expresiones son equivalentes :
d(c(R))
R | c | d
E(R)
R | E // R | (C | D)

Notas: operator ( ) no está soportado para versiones calificadas como volátiles o const-volátiles de tipos de cierre de objetos adaptadores de rango.

Los objetos cuyo tipo es el mismo que uno de los siguientes objetos (ignorando la calificación cv) son objetos de cierre de adaptador de rango:

  • objetos adaptadores de rango unarios,
(desde C++23)
  • los resultados de enlazar argumentos finales mediante objetos adaptadores de rango, y
  • los resultados de encadenar dos objetos de cierre de adaptador de rango mediante operator | .

Véase también

clase de plantilla auxiliar base para definir un objeto de cierre de adaptador de rango
(plantilla de clase)