Core range functionality.
|
using | ranges::bidirectional_range_tag = ::concepts::tag< bidirectional_range_concept, forward_range_tag > |
|
template<typename I , typename S > |
using | ranges::common_iterator_t = detail::if_then_t< std::is_same< I, S >::value, I, detail::common_iterator_impl_t< I, S > > |
|
using | ranges::common_range_tag = ::concepts::tag< common_range_concept, range_tag > |
|
template<typename T > |
using | ranges::common_range_tag_of = ::concepts::tag_of< meta::list< common_range_concept, range_concept >, T > |
|
using | ranges::contiguous_range_tag = ::concepts::tag< contiguous_range_concept, random_access_range_tag > |
|
using | ranges::forward_range_tag = ::concepts::tag< forward_range_concept, input_range_tag > |
|
using | ranges::input_range_tag = ::concepts::tag< input_range_concept, range_tag > |
|
using | ranges::random_access_range_tag = ::concepts::tag< random_access_range_concept, bidirectional_range_tag > |
|
template<typename Rng > |
using | ranges::range_common_iterator_t = common_iterator_t< iterator_t< Rng >, sentinel_t< Rng > > |
|
template<typename Rng > |
using | ranges::range_common_reference_t = iter_common_reference_t< iterator_t< Rng > > |
|
template<typename Rng > |
using | ranges::range_difference_t = iter_difference_t< iterator_t< Rng > > |
|
template<typename Rng > |
using | ranges::range_reference_t = iter_reference_t< iterator_t< Rng > > |
|
template<typename Rng > |
using | ranges::range_rvalue_reference_t = iter_rvalue_reference_t< iterator_t< Rng > > |
|
template<typename Rng > |
using | ranges::range_size_t = decltype(ranges::size(std::declval< Rng & >())) |
|
using | ranges::range_tag = ::concepts::tag< range_concept > |
|
template<typename T > |
using | ranges::range_tag_of = ::concepts::tag_of< meta::list< contiguous_range_concept, random_access_range_concept, bidirectional_range_concept, forward_range_concept, input_range_concept, range_concept >, T > |
|
template<typename Rng > |
using | ranges::range_value_t = iter_value_t< iterator_t< Rng > > |
|
using | ranges::sized_range_tag = ::concepts::tag< sized_range_concept, range_tag > |
|
template<typename T > |
using | ranges::sized_range_tag_of = ::concepts::tag_of< meta::list< sized_range_concept, range_concept >, T > |
|
|
| ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename T)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_ |
| Range concepts below. More...
|
|
| ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename Rng, typename I, typename S)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_ |
|
| ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename C)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_ |
|
| ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename C, typename I)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_ |
|
| ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename T, typename V)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_ |
|
template<template< typename... > class ContT> |
auto | ranges::to () -> detail::to_container_fn< detail::from_range< ContT >> |
| For initializing a container of the specified type with the elements of an Range. More...
|
|
template<template< typename... > class ContT, typename Rng > |
auto | ranges::to (Rng &&rng) -> ContT< range_value_t< Rng >> requires range< Rng > &&detail::convertible_to_container< Rng, ContT< range_value_t< Rng >>> |
|
|
constexpr at_fn | ranges::at {} |
| Checked indexed range access. More...
|
|
constexpr back_fn | ranges::back {} |
|
constexpr _begin_::fn | ranges::begin {} |
|
concept | ranges::bidirectional_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( forward_range<T> && bidirectional_range_<T> )( forward_range<T> && bidirectional_range_<T> ) |
|
constexpr _cbegin_::fn | ranges::cbegin {} |
|
constexpr _cdata_::fn | ranges::cdata {} |
|
constexpr _cend_::fn | ranges::cend {} |
|
concept | ranges::common_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && common_range_<T> )( range<T> && common_range_<T> ) |
|
concept | ranges::container = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( semi_container<T> && constructible_from< uncvref_t<T> )( semi_container<T> && constructible_from< uncvref_t<T>, detail::movable_input_iterator<range_value_t<T>>, detail::movable_input_iterator<range_value_t<T>>> ) |
|
concept | ranges::contiguous_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( random_access_range<T> && contiguous_range_<T> )( random_access_range<T> && contiguous_range_<T> ) |
|
constexpr _crbegin_::fn | ranges::crbegin {} |
|
constexpr _crend_::fn | ranges::crend {} |
|
constexpr _empty_::fn | ranges::empty {} |
|
template<typename T > |
constexpr bool | ranges::enable_view |
|
constexpr _end_::fn | ranges::end {} |
|
concept | ranges::erasable_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (Rng &&rng, I first, S last) ( ranges::erase(static_cast<Rng &&>(rng), first, last) ) && range<Rng> )( requires (Rng &&rng, I first, S last) ( ranges::erase(static_cast<Rng &&>(rng), first, last) ) && range<Rng> ) |
|
concept | ranges::forward_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( input_range<T> && forward_range_<T> )( input_range<T> && forward_range_<T> ) |
|
constexpr front_fn | ranges::front {} |
|
constexpr index_fn | ranges::index {} |
| Unchecked indexed range access. More...
|
|
concept | ranges::input_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && input_range_<T> )( range<T> && input_range_<T> ) |
|
concept | ranges::lvalue_container_like = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( implicitly_convertible_to<detail::is_lvalue_container_like_t<T> )( implicitly_convertible_to<detail::is_lvalue_container_like_t<T>, std::true_type> && forward_range<T> ) |
|
concept | ranges::output_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && output_iterator<iterator_t<T> )( range<T> && output_iterator<iterator_t<T>, V> ) |
|
concept | ranges::random_access_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( bidirectional_range<T> && random_access_range_<T> )( bidirectional_range<T> && random_access_range_<T> ) |
|
concept | ranges::random_access_reservable = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( reservable<C> && random_access_range<C> )( reservable<C> && random_access_range<C> ) |
|
concept | ranges::range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range_impl_<T &> )( range_impl_<T &> ) |
|
constexpr _rbegin_::fn | ranges::rbegin {} |
|
constexpr _rend_::fn | ranges::rend {} |
|
concept | ranges::reservable = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (C &c, C const &cc, range_size_t<C> s) ( c.reserve(s), cc.capacity(), cc.max_size(), concepts::requires_<same_as<decltype(cc.capacity()), range_size_t<C>>>, concepts::requires_<same_as<decltype(cc.max_size()), range_size_t<C>>> ) && container<C> && sized_range<C> )( requires (C &c, C const &cc, range_size_t<C> s) ( c.reserve(s), cc.capacity(), cc.max_size(), concepts::requires_<same_as<decltype(cc.capacity()), range_size_t<C>>>, concepts::requires_<same_as<decltype(cc.max_size()), range_size_t<C>>> ) && container<C> && sized_range<C> ) |
|
concept | ranges::reservable_with_assign = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (C &c, I i) ( c.assign(i, i) ) && reservable<C> && input_iterator<I> )( requires (C &c, I i) ( c.assign(i, i) ) && reservable<C> && input_iterator<I> ) |
|
concept | ranges::semi_container = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( forward_range<T> && default_constructible<uncvref_t<T>> && movable<uncvref_t<T>> && !view_<T> )( forward_range<T> && default_constructible<uncvref_t<T>> && movable<uncvref_t<T>> && !view_<T> ) |
|
constexpr _size_::fn | ranges::size {} |
|
concept | ranges::sized_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (T &t) ( ranges::size(t) ) && range<T> && detail::integer_like_<range_size_t<T>> && !disable_sized_range<uncvref_t<T>> )( requires (T &t) ( ranges::size(t) ) && range<T> && detail::integer_like_<range_size_t<T>> && !disable_sized_range<uncvref_t<T>> ) |
|
constexpr detail::to_container_fn< detail::from_range< std::vector > > | ranges::to_vector {} |
|
concept | ranges::view_ = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && semiregular<T> && enable_view<T> )( range<T> && semiregular<T> && enable_view<T> ) |
|
concept | ranges::viewable_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && (forwarding_range_<T> || view_<detail::decay_t<T>>) )( range<T> && (forwarding_range_<T> || view_<detail::decay_t<T>>) ) |
|