Namensräume
Varianten
Aktionen

std::experimental::ranges::next

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Iterator-Bibliothek
Iterator-Konzepte
Indirekte aufrufbare Konzepte
                                                  
                                                  
                                                  
Gemeinsame Algorithmus-Anforderungen
                                                  
Konzept-Dienstprogramme
Iterator-Dienstprogramme und -Operationen
next
Iterator-Traits
Iterator-Adapter
Stream-Iteratoren
 
Definiert in Header <experimental/ranges/iterator>
namespace {

    constexpr /* nicht spezifiziert */ next = /* nicht spezifiziert */;

}
(Ranges TS)
(Customization-Point-Objekt)
Aufruf-Signatur
template< Iterator I >
constexpr I next( I i );
(1)
template< Iterator I >
constexpr I next( I i, ranges::difference_type_t<I> n );
(2)
template< Iterator I, Sentinel<I> S >
constexpr I next( I i, S bound );
(3)
template< Iterator I, Sentinel<I> S >
constexpr I next( I i, ranges::difference_type_t<I> n, S bound );
(4)

Fortschaltet den Iterator i n mal, oder bis bound erreicht ist, je nachdem, was zuerst eintritt, und gibt den fortgeschalteten Iterator zurück.

1) Entspricht ++i; return i;.
2) Entspricht ranges::advance(i, n); return i;.
3) Entspricht ranges::advance(i, bound); return i;.
4) Entspricht ranges::advance(i, n, bound); return i;.

Inhalt

[bearbeiten] Customization Point Objects

Der Name ranges::next bezeichnet ein Customization Point Object, welches ein Funktionsobjekt eines literalen Semiregular-Klassentyps ist (für Demonstrationszwecke als NextT bezeichnet). Alle Instanzen von NextT sind gleich. Daher kann ranges::next frei kopiert werden und seine Kopien können austauschbar verwendet werden.

Gegeben sei eine Menge von Typen Args.... Wenn std::declval<Args>()... die Anforderungen an Argumente für ranges::next von oben erfüllen, dann erfüllt NextT ranges::Invocable<const NextT, Args...>. Andernfalls nimmt kein Funktionsaufrufoperator von NextT an der Überladungsauflösung teil.

In jeder Translation Unit, in der ranges::next definiert ist, bezieht es sich auf dieselbe Instanz des Customization Point Objects. (Das bedeutet, dass es frei in Dingen wie Inline-Funktionen und Funktions-Templates verwendet werden kann, ohne die Ein-Definitionen-Regel zu verletzen.)

[bearbeiten] Rückgabewert

Der fortgeschaltete Iterator.

[bearbeiten] Hinweise

Obwohl das Weglassen von n für Überladung (2) so funktioniert, als wäre n gleich 1, funktioniert das Weglassen von n für Überladung (4) effektiv so, als wäre n unendlich (immer bis bound fortschalten).

[bearbeiten] Beispiel

[bearbeiten] Siehe auch

(C++11)
inkrementiert einen Iterator
(Funktionsvorlage) [bearbeiten]
bewegt einen Iterator um die angegebene Distanz vorwärts
(Funktionsvorlage) [bearbeiten]
dekrementiert einen Iterator
(Funktionsvorlage) [bearbeiten]
gibt die Distanz zwischen einem Iterator und einem Sentinel zurück, oder zwischen dem Anfang und dem Ende eines Bereichs
(Funktionsvorlage) [bearbeiten]