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>&>;