Spec-Zone.ru › C++

std::indirectly_readable

Определён в заголовочном файле <iterator>
template< class In >
    concept __IndirectlyReadableImpl =
        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>&
        >;
(только для иллюстрации*)
template< class In >
    concept indirectly_readable =
        __IndirectlyReadableImpl<std::remove_cvref_t<In>>;
(начиная с C++20)

Концепция indirectly_readable моделируется типами, из которых можно считывать значения с помощью operator*, например указателями, интеллектуальными указателями и входными итераторами.

Семантические требования

При заданном значении i типа I, I моделирует indirectly_readable только в том случае, если все включаемые ею концепции моделируются, а выражение *i сохраняет равенство.

Сохранение равенства

Выражения, объявленные в выражениях requires концепций стандартной библиотеки, должны сохранять равенство (если не указано иное).

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/indirectly_readable

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API