# std::experimental::ranges::Readable

From cppreference.com
< cpp‎ | experimental‎ | ranges

Defined in header `<experimental/ranges/iterator>` |  |

template <class I>

concept bool Readable() {
return ranges::Movable<I>()
&& ranges::DefaultConstructible<I>()
&& requires(const I& i) {
typename ranges::value_type_t<I>;
typename ranges::reference_t<I>;
typename ranges::rvalue_reference_t<I>;
{ *i } -> ranges::Same<ranges::reference_t<I>>;
{ ranges::iter_move(i) } -> ranges::Same<ranges::rvalue_reference_t<I>>;
}
&& ranges::CommonReference<ranges::reference_t<I>, ranges::value_type_t<I>&>()
&& ranges::CommonReference<ranges::reference_t<I>,
ranges::rvalue_reference_t<I>>()
&& ranges::CommonReference<ranges::rvalue_reference_t<I>,
const ranges::value_type_t<I>&>()
&& ranges::Same<std::common_reference_t<ranges::reference_t<I>,
ranges::value_type_t<I>>,
ranges::value_type_t<I>>()
&& ranges::Same<std::common_reference_t<ranges::rvalue_reference_t<I>,
ranges::value_type_t<I>>,
ranges::value_type_t<I>>();

}

(ranges TS)

| This section is incomplete Reason: add description and extra caveats

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/Readable&oldid=89702"
Category:

- Todo with reason