Horizon
Loading...
Searching...
No Matches
Range Concepts

Range concepts. More...

Namespaces

namespace  ranges::cpp20

Concepts

concept  ranges::_range_
 The _range_ concept.
concept  ranges::range
 The range concept.
concept  ranges::borrowed_range
 The borrowed_range concept.
concept  ranges::output_range_
 The output_range_ concept.
concept  ranges::output_range
 The output_range concept.
concept  ranges::input_range_
 The input_range_ concept.
concept  ranges::input_range
 The input_range concept.
concept  ranges::forward_range_
 The forward_range_ concept.
concept  ranges::forward_range
 The forward_range concept.
concept  ranges::bidirectional_range_
 The bidirectional_range_ concept.
concept  ranges::bidirectional_range
 The bidirectional_range concept.
concept  ranges::random_access_range_
 The random_access_range_ concept.
concept  ranges::random_access_range
 The random_access_range concept.
concept  ranges::contiguous_range_
 The contiguous_range_ concept.
concept  ranges::contiguous_range
 The contiguous_range concept.
concept  ranges::common_range_
 The common_range_ concept.
concept  ranges::common_range
 The common_range concept.
concept  ranges::sized_range_
 The sized_range_ concept.
concept  ranges::sized_range
 The sized_range concept.
concept  ranges::view_
 The view_ concept.
concept  ranges::viewable_range
 The viewable_range concept.

Classes

struct  ranges::range_tag
struct  ranges::input_range_tag
struct  ranges::forward_range_tag
struct  ranges::bidirectional_range_tag
struct  ranges::random_access_range_tag
struct  ranges::contiguous_range_tag
struct  ranges::common_range_tag
struct  ranges::sized_range_tag

Typedefs

template<typename Rng>
using ranges::range_tag_of
template<typename Rng>
using ranges::common_range_tag_of
template<typename Rng>
using ranges::sized_range_tag_of

Functions

template<typename T>
 ranges::CPP_requires (_range_, requires(T &t)(ranges::begin(t), ranges::end(t)))
 ranges::template (typename T, typename V)(concept(output_range_)(T
template<typename T>
 ranges::CPP_requires (sized_range_, requires(T &t)(ranges::size(t)))

Variables

template<typename T>
CPP_concept ranges::range
template<typename T>
CPP_concept ranges::borrowed_range
template<typename R>
RANGES_INLINE_VAR constexpr bool ranges::safe_range = borrowed_range<R>
 ranges::V
 ranges::output_iterator< iterator_t< T >, V >
template<typename T, typename V>
CPP_concept ranges::output_range
 ranges::input_iterator< iterator_t< T > >
template<typename T>
CPP_concept ranges::input_range
 ranges::forward_iterator< iterator_t< T > >
template<typename T>
CPP_concept ranges::forward_range
 ranges::bidirectional_iterator< iterator_t< T > >
template<typename T>
CPP_concept ranges::bidirectional_range
 ranges::random_access_iterator< iterator_t< T > >
template<typename T>
CPP_concept ranges::random_access_range
contiguous_iterator< iterator_t< T > > AND ranges::same_as< detail::data_t< T >, std::add_pointer_t< iter_reference_t< iterator_t< T > > > >
template<typename T>
CPP_concept ranges::contiguous_range
 ranges::same_as< iterator_t< T >, sentinel_t< T > >
template<typename T>
CPP_concept ranges::common_range
template<typename T>
CPP_concept ranges::sized_range
template<typename T>
RANGES_INLINE_VAR constexpr bool ranges::enable_view
template<typename T>
CPP_concept ranges::view_
template<typename T>
CPP_concept ranges::viewable_range

Detailed Description

Range concepts.

Typedef Documentation

◆ common_range_tag_of

template<typename Rng>
using ranges::common_range_tag_of
Initial value:
std::enable_if_t<
The range concept.
typename detail::_cond< If >::template invoke< Then, Else > conditional_t
Select one type or another depending on a compile-time Boolean.
Definition meta.hpp:1148
Definition concepts.hpp:305
Definition concepts.hpp:268

◆ range_tag_of

template<typename Rng>
using ranges::range_tag_of

◆ sized_range_tag_of

template<typename Rng>
using ranges::sized_range_tag_of
Initial value:

Variable Documentation

◆ bidirectional_range

template<typename T>
CPP_concept ranges::bidirectional_range
Initial value:
=
The bidirectional_range_ concept.

◆ borrowed_range

template<typename T>
CPP_concept ranges::borrowed_range
Initial value:
=
range<T> && detail::_borrowed_range<T>

◆ common_range

template<typename T>
CPP_concept ranges::common_range
Initial value:
=
range<T> && CPP_concept_ref(ranges::common_range_, T)
The common_range_ concept.

◆ contiguous_range

template<typename T>
CPP_concept ranges::contiguous_range
Initial value:
=
The contiguous_range_ concept.

◆ enable_view

template<typename T>
RANGES_INLINE_VAR constexpr bool ranges::enable_view
constexpr
Initial value:
=
ext::enable_view<T>::value

◆ forward_range

template<typename T>
CPP_concept ranges::forward_range
Initial value:
=
input_range<T> && CPP_concept_ref(ranges::forward_range_, T)
The forward_range_ concept.

◆ input_range

template<typename T>
CPP_concept ranges::input_range
Initial value:
=
range<T> && CPP_concept_ref(ranges::input_range_, T)
The input_range_ concept.

◆ output_range

template<typename T, typename V>
CPP_concept ranges::output_range
Initial value:
=
range<T> && CPP_concept_ref(ranges::output_range_, T, V)
The output_range_ concept.

◆ random_access_range

template<typename T>
CPP_concept ranges::random_access_range
Initial value:
=
The random_access_range_ concept.

◆ range

template<typename T>
CPP_concept ranges::range
Initial value:
=
CPP_requires_ref(ranges::_range_, T)
The _range_ concept.

◆ sized_range

template<typename T>
CPP_concept ranges::sized_range
Initial value:
=
!disable_sized_range<uncvref_t<T>> &&
CPP_requires_ref(ranges::sized_range_, T) &&
CPP_concept_ref(ranges::sized_range_, T)
The sized_range_ concept.

◆ view_

template<typename T>
CPP_concept ranges::view_
Initial value:
=
semiregular<T> &&
enable_view<T>

◆ viewable_range

template<typename T>
CPP_concept ranges::viewable_range
Initial value:
=
The borrowed_range concept.
The view_ concept.