# 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"