Horizon
Classes | Typedefs | Functions | Variables
Range Concepts

Range concepts. More...

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 = std::enable_if_t< range< Rng >, meta::conditional_t< contiguous_range< Rng >, contiguous_range_tag, meta::conditional_t< random_access_range< Rng >, random_access_range_tag, meta::conditional_t< bidirectional_range< Rng >, bidirectional_range_tag, meta::conditional_t< forward_range< Rng >, forward_range_tag, meta::conditional_t< input_range< Rng >, input_range_tag, range_tag > >> >> >
 
template<typename Rng >
using ranges::common_range_tag_of = std::enable_if_t< range< Rng >, meta::conditional_t< common_range< Rng >, common_range_tag, range_tag > >
 
template<typename Rng >
using ranges::sized_range_tag_of = std::enable_if_t< range< Rng >, meta::conditional_t< sized_range< Rng >, sized_range_tag, range_tag > >
 

Functions

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

Variables

template<typename T >
CPP_concept ranges::range
 \concept range More...
 
template<typename T >
CPP_concept ranges::borrowed_range
 \concept borrowed_range More...
 
template<typename R >
constexpr RANGES_INLINE_VAR 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
 \concept output_range More...
 
 ranges::input_iterator< iterator_t< T > >
 
template<typename T >
CPP_concept ranges::input_range
 \concept input_range More...
 
 ranges::forward_iterator< iterator_t< T > >
 
template<typename T >
CPP_concept ranges::forward_range
 \concept forward_range More...
 
 ranges::bidirectional_iterator< iterator_t< T > >
 
template<typename T >
CPP_concept ranges::bidirectional_range
 \concept bidirectional_range More...
 
 ranges::random_access_iterator< iterator_t< T > >
 
template<typename T >
CPP_concept ranges::random_access_range
 \concept random_access_range More...
 
template<typename T >
CPP_concept ranges::contiguous_range
 \concept contiguous_range More...
 
 ranges::same_as< iterator_t< T >, sentinel_t< T > >
 
template<typename T >
CPP_concept ranges::common_range
 \concept common_range More...
 
template<typename T >
CPP_concept ranges::sized_range
 \concept sized_range More...
 
template<typename T >
constexpr RANGES_INLINE_VAR bool ranges::enable_view
 
template<typename T >
CPP_concept ranges::view_
 \concept view_ More...
 
template<typename T >
CPP_concept ranges::viewable_range
 \concept viewable_range More...
 

Detailed Description

Range concepts.

Function Documentation

◆ CPP_requires() [1/2]

template<typename T >
ranges::CPP_requires ( _range_  ,
requires(T &t)(ranges::begin(t), ranges::end(t))   
)

\concept range

The range concept

◆ CPP_requires() [2/2]

template<typename T >
ranges::CPP_requires ( sized_range_  ,
requires(T &t)(ranges::size(t))   
)

\concept sized_range_

The sized_range_ concept

◆ template()

ranges::template ( typename T  ,
typename V   
)

\concept output_range_

The output_range_ concept

Variable Documentation

◆ bidirectional_range

template<typename T >
CPP_concept ranges::bidirectional_range
Initial value:
=
forward_range<T> && CPP_concept_ref(ranges::bidirectional_range_, T)

\concept bidirectional_range

The bidirectional_range concept

◆ borrowed_range

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

\concept borrowed_range

The borrowed_range concept

◆ common_range

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

\concept common_range

The common_range concept

◆ contiguous_range

template<typename T >
CPP_concept ranges::contiguous_range
Initial value:
=
random_access_range<T> && CPP_concept_ref(ranges::contiguous_range_, T)

\concept contiguous_range

The contiguous_range concept

◆ enable_view

template<typename T >
constexpr RANGES_INLINE_VAR 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)

\concept forward_range

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)

\concept input_range

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)

\concept output_range

The output_range concept

◆ random_access_range

template<typename T >
CPP_concept ranges::random_access_range
Initial value:
=
bidirectional_range<T> && CPP_concept_ref(ranges::random_access_range_, T)

\concept random_access_range

The random_access_range concept

◆ range

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

\concept range

The range concept

◆ sized_range

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

\concept sized_range

The sized_range concept

◆ view_

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

\concept view_

The view_ concept

◆ viewable_range

template<typename T >
CPP_concept ranges::viewable_range
Initial value:
=
range<T> &&
(borrowed_range<T> || view_<uncvref_t<T>>)

\concept viewable_range

The viewable_range concept