Standard library header <experimental/ranges/range>
From cppreference.com
<
cpp
|
header
|
experimental
This header is part of the ranges library.
Range concepts
Defined in namespace
std::experimental::ranges
|
|
specifies that a type is a range, that is, it provides a
begin
iterator and an
end
sentinel
(concept) |
|
specifies that a range knows its size in constant time
(concept) |
|
specifies that a range is a view, that is, it has constant time copy/move/assignment
(concept) |
|
specifies that a range has identical iterator and sentinel types
(concept) |
|
specifies a range whose iterator type satisfies
InputIterator
(concept) |
|
specifies a range whose iterator type satisfies
OutputIterator
(concept) |
|
specifies a range whose iterator type satisfies
ForwardIterator
(concept) |
|
specifies a range whose iterator type satisfies
BidirectionalIterator
(concept) |
|
specifies a range whose iterator type satisfies
RandomAccessIterator
(concept) |
Range access
Defined in namespace
std::experimental::ranges
|
|
returns an iterator to the beginning of a range
(customization point object) |
|
returns an iterator to the end of a range
(customization point object) |
|
returns a reverse iterator to a range
(customization point object) |
|
returns a reverse end iterator to a range
(customization point object) |
Range primitives
Defined in namespace
std::experimental::ranges
|
|
obtains the size of a range whose size can be calculated in constant time
(customization point object) |
|
checks whether a range is empty
(customization point object) |
|
obtains a pointer to the beginning of a contiguous range
(customization point object) |
|
obtains the iterator and sentinel types of a range
(alias template) |
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 definition */; template <class T> concept bool SizedRange = /* see definition */; template <class T> concept bool View = /* see definition */; template <class T> concept bool BoundedRange = /* see definition */; template <class T> concept bool InputRange = /* see definition */; template <class R, class T> concept bool OutputRange = /* see definition */; template <class T> concept bool ForwardRange = /* see definition */; template <class T> concept bool BidirectionalRange = /* see definition */; template <class T> concept bool RandomAccessRange = /* see definition */; }}}}