std::input_iterator
Definido en el archivo de encabezado <iterator>
|
||
template<class I> concept input_iterator = |
(desde C++20) | |
El concepto input_iterator
es un refinamiento de input_or_output_iterator
, agregando el requisito de que los valores referenciados puedan leerse (a través de indirectly_readable
) y el requisito de que la etiqueta del concepto de iterador esté presente.
[editar] Determinación del concepto de iterador
La definición de este concepto se especifica mediante una plantilla de alias de solo exposición /*CONCEPTO_ITER*/.
Para determinar /*CONCEPTO_ITER*/<I>, dejemos que RASGOS_ITER<I> denote I si la especialización std::iterator_traits<I> se genera a partir de la plantilla principal, o std::iterator_traits<I> de lo contrario:
- Si RASGOS_ITER<I>::iterator_concept es válido y nombra un tipo, /*CONCEPTO_ITER*/<I> denota el tipo.
- De lo contrario, si RASGOS_ITER<I>::iterator_category es válido y nombra un tipo, /*CONCEPTO_ITER*/<I> denota el tipo.
- De lo contrario, si std::iterator_traits <I> se genera a partir de la plantilla principal, /*CONCEPTO_ITER*/<I> denota std::random_access_iterator_tag.
- De lo contrario, /*CONCEPTO_ITER*/<I> no denota un tipo y da como resultado un error de sustitución.
[editar] Notas
A diferencia de los requisitos de IteradorDeEntradaLegado, el concepto input_iterator
no requiere equality_comparable
, ya que los iteradores de entrada generalmente se comparan con centinelas.
[editar] Véase también
Especifica que los objetos de un tipo pueden incrementarse y desreferenciarse. (concepto) |