命名空间
变体
操作

std::indirectly_readable

来自 cppreference.com
< cpp‎ | iterator
 
 
迭代器库
迭代器概念
indirectly_readable
(C++20)
迭代器原语
算法概念和实用工具
间接可调用概念
通用算法要求
(C++20)
(C++20)
(C++20)
实用工具
(C++20)
迭代器适配器
范围访问
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
定义在头文件 <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 的值 iI 仅在它包含的所有概念都被建模且表达式 *i保持相等性 的情况下,才建模 indirectly_readable

[编辑] 保持相等性

在标准库概念的 requires 表达式 中声明的表达式要求是 保持相等性 的(除非另有说明)。