# std::experimental::ranges::Range

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

Defined in header `<experimental/ranges/range>` |  |
template< class T > concept bool Range = requires(T&& t) { ranges::begin(t); /* not necessarily equality-preserving (see below) */ ranges::end(t); }; |  | (ranges TS)

Given an lvalue `t` of type std::remove_reference_t<T>, `Range<T>` is satisfied only if

- `[`ranges::begin(t)`,` ranges::end(t)`)` denotes a range; and
- both ranges::begin(t) and ranges::end(t) are amortized constant time and non-modifying.
- If ranges::iterator_t<T> satisfies `ForwardIterator`, ranges::begin(t) is equality preserving.

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/range/Range&oldid=155564"