std::experimental::ranges:: advance
|
Definido en el encabezado
<experimental/ranges/iterator>
|
||
|
namespace
{
constexpr
/* no especificado */
advance
=
/* no especificado */
;
|
(ranges TS)
(objeto de punto de personalización) |
|
|
Firma de llamada
|
||
|
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) | |
Avanza el iterador i n veces, o hasta que se alcance bound , lo que ocurra primero.
I
modela
RandomAccessIterator
, equivalente a
i
+
=
n
. De lo contrario, incrementa (o decrementa si
n
es negativo)
i
n
veces. El comportamiento es indefinido si
n
es negativo y
I
no modela
BidirectionalIterator
.
[
i
,
bound
)
no denota un rango, el comportamiento es indefinido.
[
i
,
bound
)
denotará un rango; si
n
==
0
, ya sea
[
i
,
bound
)
o
[
bound
,
i
)
denotará un rango; si
n
<
0
,
[
bound
,
i
)
denotará un rango,
I
y
S
serán del mismo tipo, y
I
debe modelar
BidirectionalIterator
. De lo contrario, el comportamiento es indefinido.
Contenidos |
Objetos de punto de personalización
El nombre
ranges::advance
denota un
objeto de punto de personalización
, que es un
objeto función
de tipo
literal
Semiregular
(denotado, con fines expositivos, como
AdvanceT
). Todas las instancias de
AdvanceT
son iguales. Por lo tanto,
ranges::advance
puede copiarse libremente y sus copias pueden usarse indistintamente.
Dado un conjunto de tipos
Args...
, si
std::
declval
<
Args
>
(
)
...
cumplen los requisitos para argumentos de
ranges::advance
mencionados anteriormente,
AdvanceT
satisfará
ranges
::
Invocable
<
const
AdvanceT, Args...
>
. De lo contrario, ningún operador de llamada a función de
AdvanceT
participa en la resolución de sobrecarga.
En cada unidad de traducción en la que
ranges::advance
está definido, se refiere a la misma instancia del objeto de punto de personalización. (Esto significa que puede usarse libremente en elementos como funciones inline y plantillas de funciones sin violar la
regla de una definición
.)
Valor de retorno
M
es la distancia desde la posición inicial de
i
hasta la posición final y es negativa si la posición final está antes de la posición inicial.
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Véase también
|
avanza un iterador una distancia dada
(plantilla de función) |
|
|
retorna la distancia entre un iterador y un centinela, o entre el inicio y el final de un rango
(plantilla de función) |
|
|
incrementa un iterador
(plantilla de función) |
|
|
decrementa un iterador
(plantilla de función) |