std::experimental::ranges:: advance
|
Défini dans l'en-tête
<experimental/ranges/iterator>
|
||
|
namespace
{
constexpr
/* non spécifié */
advance
=
/* non spécifié */
;
|
(ranges TS)
(objet de point de personnalisation) |
|
|
Signature d'appel
|
||
|
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) | |
Avance l'itérateur i n fois, ou jusqu'à ce que bound soit atteint, selon la première éventualité.
I
modélise
RandomAccessIterator
, équivalent à
i
+
=
n
. Sinon, incrémente (ou décrémente si
n
est négatif)
i
n
fois. Le comportement est indéfini si
n
est négatif et
I
ne modélise pas
BidirectionalIterator
.
[
i
,
bound
)
ne dénote pas une plage, le comportement est indéfini.
[
i
,
bound
)
désigne un intervalle ; si
n
==
0
, soit
[
i
,
bound
)
soit
[
bound
,
i
)
désigne un intervalle ; si
n
<
0
,
[
bound
,
i
)
désigne un intervalle,
I
et
S
doivent être du même type, et
I
doit modéliser
BidirectionalIterator
. Sinon, le comportement est indéfini.
Table des matières |
Objets de point de personnalisation
Le nom
ranges::advance
désigne un
objet de point de personnalisation
, qui est un
objet fonction
d'un type de classe
littéral
Semiregular
(désigné, à des fins d'exposition, comme
AdvanceT
). Toutes les instances de
AdvanceT
sont égales. Ainsi,
ranges::advance
peut être copié librement et ses copies peuvent être utilisées de manière interchangeable.
Étant donné un ensemble de types
Args...
, si
std::
declval
<
Args
>
(
)
...
satisfont aux exigences pour les arguments de
ranges::advance
ci-dessus,
AdvanceT
satisfera
ranges
::
Invocable
<
const
AdvanceT, Args...
>
. Sinon, aucun opérateur d'appel de fonction de
AdvanceT
ne participe à la résolution de surcharge.
Dans chaque unité de traduction où
ranges::advance
est défini, il fait référence à la même instance de l'objet de point de personnalisation. (Cela signifie qu'il peut être utilisé librement dans des éléments comme les fonctions inline et les modèles de fonction sans violer la
règle de définition unique
.)
Valeur de retour
M
est la distance entre la position de départ de
i
et la position d'arrivée, et est négative si la position d'arrivée est avant la position de départ.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
avance un itérateur d'une distance donnée
(modèle de fonction) |
|
|
retourne la distance entre un itérateur et un sentinelle, ou entre le début et la fin d'une plage
(modèle de fonction) |
|
|
incrémente un itérateur
(modèle de fonction) |
|
|
décrémente un itérateur
(modèle de fonction) |