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/w/cpp/iterator/indirectly_readable

Spec-Zone.ru

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