◐ Shell
clean mode source ↗

std::indirectly_readable - cppreference.com

De cppreference.com

Definido en el archivo de encabezado <iterator>

template<class In> concept __IndirectlyReadableImpl = // solo exposición requires(const In in) { typename std::iter_value_t<In>; typename std::iter_reference_t<In>; typename std::iter_rvalue_reference_t<In>; { *in } -> std::same_as<std::iter_reference_t<In>>; { ranges::iter_move(in) } -> std::same_as<std::iter_rvalue_reference_t<In>>; } && std::common_reference_with< std::iter_reference_t<In>&&, std::iter_value_t<In>& > && std::common_reference_with< std::iter_reference_t<In>&&, std::iter_rvalue_reference_t<In>&& > && std::common_reference_with< std::iter_rvalue_reference_t<In>&&, const std::iter_value_t<In>& >;

(desde C++20)

template<class In> concept indirectly_readable = __IndirectlyReadableImpl<std::remove_cvref_t<In>>;

(desde C++20)

El concepto indirectly_readable (indirectamente legible) es modelado por tipos que son legibles al aplicar operator*, tales como punteros, punteros inteligentes, e iteradores de entrada.

Requerimientos semánticos

Dado un valor i de tipo I, I modela indirectly_readable solo si se modelan todos los modelos que subsume y la expresión *i es conservadora de igualdad.

Conservación de la igualdad

Una expresión es conservadora de igualdad si resulta en salidas iguales dadas entradas iguales.

  • Las entradas de una expresión consisten en sus operandos.
  • Las salidas de una expresión consisten en su resultado y todos los operandos modificados por la expresión (si es que los hay).

Cada expresión que se requiere sea conservadora de igualdad, se requiere además que sea estable: dos evaluaciones de tal expresión con los mismos objetos de entrada debe tener salidas iguales si no se encuentra alguna modificación interventora de esos objetos de entrada.

A menos que se indique de otra manera, cada expresión utilizada en una expresión-requiere se requiere sea conservadora de igualdad y estable, y la evaluación de la expresión puede solamente modificar sus operandos no constantes. Los operandos que son constantes no deben ser modificados.