Namespaces
Variants

std::experimental::ranges:: OutputIterator

From cppreference.net
Défini dans l'en-tête <experimental/ranges/iterator>
template < class I, class T >

concept bool OutputIterator =
Iterator < I > && Writable < I, T > &&
requires ( I i, T && t ) {
* i ++ = std:: forward < T > ( t ) ; // non requis d'être préservateur d'égalité

} ;
(ranges TS)

Le concept OutputIterator est un raffinement du concept Iterator , ajoutant l'exigence qu'il puisse être utilisé pour écrire des valeurs de type et de catégorie de valeur encodées par T (via Writable ). EqualityComparable n'est pas requis.

Soit E une expression telle que decltype ( ( E ) ) soit T , et i un objet déréférençable de type I . OutputIterator<I, T> est satisfait seulement si * i ++ = E ; a des effets équivalents à * i = E ; ++ i ; .

Préservation de l'égalité

Une expression est préservatrice d'égalité si elle produit des résultats égaux pour des entrées égales.

  • Les entrées d'une expression consistent en ses opérandes.
  • Les sorties d'une expression consistent en son résultat et tous les opérandes modifiés par l'expression (le cas échéant).

Toute expression devant préserver l'égalité doit en outre être stable : deux évaluations d'une telle expression avec les mêmes objets d'entrée doivent produire des sorties égales en l'absence de toute modification explicite intervenant entre-temps de ces objets d'entrée.

Notes

Contrairement aux exigences des itérateurs de sortie dans la norme C++, OutputIterator dans le Ranges TS ne nécessite pas que l'étiquette de catégorie d'itérateur soit définie.

Les algorithmes sur les itérateurs de sortie doivent être à passage unique.