10.3 Header <experimental/ranges/range> synopsis [range.synopsis]
#include <experimental/ranges/iterator>
namespace std { namespace experimental { namespace ranges { inline namespace v1 {
namespace {
constexpr unspecified begin = unspecified;
constexpr unspecified end = unspecified;
constexpr unspecified cbegin = unspecified;
constexpr unspecified cend = unspecified;
constexpr unspecified rbegin = unspecified;
constexpr unspecified rend = unspecified;
constexpr unspecified crbegin = unspecified;
constexpr unspecified crend = unspecified;
}
namespace {
constexpr unspecified size = unspecified;
constexpr unspecified empty = unspecified;
constexpr unspecified data = unspecified;
constexpr unspecified cdata = unspecified;
}
template <class T>
using iterator_t = decltype(ranges::begin(declval<T&>()));
template <class T>
using sentinel_t = decltype(ranges::end(declval<T&>()));
template <class>
constexpr bool disable_sized_range = false;
template <class T>
struct enable_view { };
struct view_base { };
template <class T>
concept bool Range = see below;
template <class T>
concept bool SizedRange = see below;
template <class T>
concept bool View = see below;
template <class T>
concept bool BoundedRange = see below;
template <class T>
concept bool InputRange = see below;
template <class R, class T>
concept bool OutputRange = see below;
template <class T>
concept bool ForwardRange = see below;
template <class T>
concept bool BidirectionalRange = see below;
template <class T>
concept bool RandomAccessRange = see below;
}}}}