std::experimental::ranges::next
| 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.
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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] Siehe auch
| (C++11) |
inkrementiert einen Iterator (Funktionsvorlage) |
| bewegt einen Iterator um die angegebene Distanz vorwärts (Funktionsvorlage) | |
| dekrementiert einen Iterator (Funktionsvorlage) | |
| gibt die Distanz zwischen einem Iterator und einem Sentinel zurück, oder zwischen dem Anfang und dem Ende eines Bereichs (Funktionsvorlage) |