Namespaces
Variants

std::experimental::ranges:: next

From cppreference.net
namespace {

constexpr /* unspecified */ next = /* unspecified */ ;

}
(ranges TS)
(Anpassungspunktobjekt)
Aufrufsignatur
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)

Bewegt den Iterator i n Mal vorwärts, oder bis bound erreicht wird, je nachdem was zuerst eintritt, und gibt den vorgerückten 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 ; .

Inhaltsverzeichnis

Customization Point Objects

Der Name ranges::next bezeichnet ein Customization Point Object , welches ein Funktionsobjekt eines Literal Semiregular Klassentyps ist (zur Veranschaulichung 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 eine Menge von Typen Args... , falls std:: declval < Args > ( ) ... die Anforderungen für Argumente von ranges::next oben erfüllen, wird NextT ranges :: Invocable < const NextT, Args... > erfüllen. Andernfalls beteiligt sich kein Funktionsaufrufoperator von NextT an der Überladungsauflösung.

In jeder Übersetzungseinheit, in der ranges::next definiert ist, bezieht es sich auf dieselbe Instanz des Customization Point Objects. (Dies bedeutet, dass es frei in Dingen wie Inline-Funktionen und Funktionsvorlagen verwendet werden kann, ohne das One-Definition-Rule zu verletzen.)

Rückgabewert

Der erweiterte Iterator.

Hinweise

Obwohl das Weglassen von n für Überladung (2) sich so verhält, als ob n 1 wäre, verhält sich das Weglassen von n für Überladung (4) effektiv so, als ob n unendlich wäre (immer bis zu bound vorrücken).

Beispiel

Siehe auch

(C++11)
erhöht einen Iterator
(Funktions-Template)
bewegt einen Iterator um eine gegebene Distanz
(Funktions-Template)
verringert einen Iterator
(Funktions-Template)
gibt die Distanz zwischen einem Iterator und einem Sentinel zurück, oder zwischen dem Anfang und dem Ende eines Bereichs
(Funktions-Template)