std:: sized_sentinel_for, std:: disable_sized_sentinel_for
|
Definido en el encabezado
<iterator>
|
||
|
template
<
class
S,
class
I
>
concept sized_sentinel_for
=
|
(1) | (desde C++20) |
|
template
<
class
S,
class
I
>
inline constexpr bool disable_sized_sentinel_for = false ; |
(2) | (desde C++20) |
sized_sentinel_for
especifica que un objeto del tipo iterador
I
y un objeto del tipo centinela
S
pueden restarse para calcular la distancia entre ellos en tiempo constante.
disable_sized_sentinel_for
plantilla de variable puede utilizarse para evitar que los iteradores y centinelas que pueden restarse pero que en realidad no modelan
sized_sentinel_for
satisfagan el concepto.
disable_sized_sentinel_for
para tipos de objeto no-array sin calificación cv
S
y
I
, siempre que al menos uno de ellos sea un
tipo definido por el programa
. Tales especializaciones son utilizables en
expresiones constantes
y tienen tipo
const
bool
.
Contenidos |
Requisitos semánticos
Sea
i
un iterador de tipo
I
, y
s
un centinela de tipo
S
tal que
[
i
,
s
)
denota un rango. Sea
n
el menor número de aplicaciones de
++
i
necesarias para hacer que
bool
(
i
==
s
)
sea
true
.
I
y
S
modelan
sized_sentinel_for<S, I>
solo si se satisfacen todas las siguientes condiciones:
- Si n es representable por std:: iter_difference_t < I > , entonces s - i está bien definido y es igual a n .
- Si - n es representable por std:: iter_difference_t < I > , entonces i - s está bien definido y es igual a - n .
Preservación de la igualdad
Las expresiones declaradas en las requires expressions de los conceptos de la biblioteca estándar deben ser equality-preserving (excepto cuando se indique lo contrario).
Variaciones de expresión implícita
Una requires expresión que utiliza una expresión que no modifica para algún operando constante lvalue también requiere variaciones de expresión implícitas .
Véase también
|
(C++20)
|
especifica que un rango conoce su tamaño en tiempo constante
(concepto) |
|
(C++20)
|
devuelve un entero igual al tamaño de un rango
(objeto de punto de personalización) |