Namespaces
Variants

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

From cppreference.net
C++ named requirements

Les objets de fermeture d'adaptateur de plage sont des FunctionObject s qui peuvent être appelés via l'opérateur pipe : si C est un objet de fermeture d'adaptateur de plage et R est une range , ces deux expressions sont équivalentes :

C(R)
R | C

Deux objets de fermeture d'adaptateur de plage peuvent être enchaînés par operator | pour produire un autre objet de fermeture d'adaptateur de plage : si C et D sont des objets de fermeture d'adaptateur de plage, alors C | D produit un objet de fermeture d'adaptateur de plage E avec les propriétés suivantes :

  • E stocke une copie de C et D , initialisée par initialisation directe non-liste à partir de std:: forward < decltype ( ( C ) ) > ( C ) et std:: forward < decltype ( ( D ) ) > ( D ) respectivement. Si une telle initialisation est invalide, C | D est également invalide.
  • Soient c et d les copies stockées (avec la même constance et catégorie de valeur que E ), et R un objet range , les expressions suivantes sont équivalentes :
d(c(R))
R | c | d
E(R)
R | E // R | (C | D)

Notes : operator ( ) n'est pas pris en charge pour les versions qualifiées volatile ou const-volatile des types de fermeture d'objets adaptateurs de plage.

Les objets dont le type est identique à l'un des objets suivants (en ignorant les qualifications cv) sont des objets de fermeture d'adaptateur de plage :

  • objets adaptateurs de plage unaires,
(depuis C++23)
  • les résultats de la liaison des arguments de fin par les objets adaptateurs de plage, et
  • les résultats de l'enchaînement de deux objets de fermeture d'adaptateur de plage par operator | .

Voir aussi

classe de base d'assistance pour définir un objet de fermeture d'adaptateur de plage
(modèle de classe)