std::experimental::ranges:: advance
|
Definiert im Header
<experimental/ranges/iterator>
|
||
|
namespace
{
constexpr
/* unspecified */
advance
=
/* unspecified */
;
|
(ranges TS)
(Anpassungspunktobjekt) |
|
|
Aufrufsignatur
|
||
|
template
<
Iterator I
>
constexpr void advance ( I & i, ranges :: difference_type_t < I > n ) ; |
(1) | |
|
template
<
Iterator I, Sentinel
<
I
>
S
>
constexpr void advance ( I & i, S bound ) ; |
(2) | |
|
template
<
Iterator I, Sentinel
<
I
>
S
>
constexpr ranges :: difference_type_t < I > advance ( I & i, ranges :: difference_type_t < I > n, S bound ) ; |
(3) | |
Bewegt den Iterator i n Mal vorwärts, oder bis bound erreicht wird, je nachdem, was zuerst eintritt.
I
das Konzept
RandomAccessIterator
modelliert, äquivalent zu
i
+
=
n
. Andernfalls wird
i
n-mal inkrementiert (oder dekrementiert, falls
n
negativ ist). Das Verhalten ist undefiniert, wenn
n
negativ ist und
I
das Konzept
BidirectionalIterator
nicht modelliert.
[
i
,
bound
)
keinen gültigen Bereich bezeichnet, ist das Verhalten undefiniert.
[
i
,
bound
)
bezeichnet einen Bereich; wenn
n
==
0
, bezeichnet entweder
[
i
,
bound
)
oder
[
bound
,
i
)
einen Bereich; wenn
n
<
0
,
[
bound
,
i
)
bezeichnet einen Bereich,
I
und
S
müssen denselben Typ haben, und
I
muss
BidirectionalIterator
modellieren. Andernfalls ist das Verhalten undefiniert.
Inhaltsverzeichnis |
Customization Point Objects
Der Name
ranges::advance
bezeichnet ein
Customization Point Object
, welches ein
Funktionsobjekt
mit einem
literal
Semiregular
-Klassentyp ist (zur Veranschaulichung als
AdvanceT
bezeichnet). Alle Instanzen von
AdvanceT
sind gleich. Daher kann
ranges::advance
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::advance
oben erfüllen, wird
AdvanceT
ranges
::
Invocable
<
const
AdvanceT, Args...
>
erfüllen. Andernfalls nimmt kein Funktionsaufrufoperator von
AdvanceT
an der Überladungsauflösung teil.
In jeder Übersetzungseinheit, in der
ranges::advance
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 die
One-Definition-Rule
zu verletzen.)
Rückgabewert
M
die Distanz von der Startposition von
i
zur Endposition ist und negativ ist, wenn die Endposition vor der Startposition liegt.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
rückt einen Iterator um eine gegebene Distanz vor
(Funktions-Template) |
|
|
gibt die Distanz zwischen einem Iterator und einem Sentinel, oder zwischen dem Anfang und dem Ende eines Bereichs zurück
(Funktions-Template) |
|
|
erhöht einen Iterator
(Funktions-Template) |
|
|
verringert einen Iterator
(Funktions-Template) |