9 Iterators library [iterators]

9.3 Iterator requirements [iterator.requirements]

9.3.4 Concept Readable [iterators.readable]

The Readable concept is satisfied by types that are readable by applying operator* including pointers, smart pointers, and iterators.

  template <class In>
  concept bool Readable =
    requires {
      typename value_type_t<In>;
      typename reference_t<In>;
      typename rvalue_reference_t<In>;
    } &&
    CommonReference<reference_t<In>&&, value_type_t<In>&> &&
    CommonReference<reference_t<In>&&, rvalue_reference_t<In>&&> &&
    CommonReference<rvalue_reference_t<In>&&, const value_type_t<In>&>;