Core range functionality.
|
template<typename I , typename S > |
using | ranges::common_iterator_t = meta::conditional_t< std::is_same< I, S >::value, I, detail::common_iterator_impl_t< I, S > > |
|
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::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 & >())) |
|
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::range_value_t = iter_value_t< iterator_t< Rng > > |
|
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 > > |
|
|
template<typename R > |
| ranges::__attribute__ ((deprecated("Please use ranges::borrowed_range instead."))) inline const expr bool safe_range |
|
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 > |
requires range< Rng > &&detail::convertible_to_cont< Rng, ContT< range_value_t< Rng > > > auto | ranges::to (Rng &&rng) -> ContT< range_value_t< Rng >> |
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
|
|
template<typename T > |
concept | ranges::_range__requires_ = CPP_REQUIRES_requires `(T & t) ( ranges::begin(t), ranges::end(t) ) |
| Range concepts below.
|
|
constexpr at_fn | ranges::at {} |
| Checked indexed range access. More...
|
|
constexpr back_fn | ranges::back {} |
|
constexpr _begin_::fn | ranges::begin {} |
|
template<typename T > |
concept | ranges::bidirectional_range |
|
template<typename T > |
concept | ranges::bidirectional_range__concept_ = bidirectional_iterator<iterator_t<T>> |
|
template<typename T > |
concept | ranges::borrowed_range |
|
constexpr _cbegin_::fn | ranges::cbegin {} |
|
constexpr _cdata_::fn | ranges::cdata {} |
|
constexpr _cend_::fn | ranges::cend {} |
|
template<typename T > |
concept | ranges::common_range |
|
template<typename T > |
concept | ranges::common_range__concept_ = same_as<iterator_t<T>, sentinel_t<T>> |
|
template<typename T > |
concept | ranges::container |
|
template<typename T > |
concept | ranges::container__concept_ = constructible_from< uncvref_t<T>, detail::movable_input_iterator<range_value_t<T>>, detail::movable_input_iterator<range_value_t<T>>> |
|
template<typename T > |
concept | ranges::contiguous_range |
|
template<typename T > |
concept | ranges::contiguous_range__concept_ = contiguous_iterator<iterator_t<T>> && same_as<detail::data_t<T>, std::add_pointer_t<iter_reference_t<iterator_t<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 {} |
|
template<typename Rng , typename I , typename S > |
concept | ranges::erasable_range |
|
template<typename Rng , typename I , typename S > |
concept | ranges::erasable_range__requires_ = CPP_REQUIRES_requires `(Rng && rng, I first, S last) ( ranges::erase((Rng &&) rng, first, last) ) |
|
template<typename T > |
concept | ranges::forward_range |
|
template<typename T > |
concept | ranges::forward_range__concept_ = forward_iterator<iterator_t<T>> |
|
constexpr front_fn | ranges::front {} |
|
constexpr index_fn | ranges::index {} |
| Unchecked indexed range access. More...
|
|
template<typename T > |
concept | ranges::input_range |
|
template<typename T > |
concept | ranges::input_range__concept_ = input_iterator<iterator_t<T>> |
|
template<typename T > |
concept | ranges::lvalue_container_like |
|
template<typename T > |
concept | ranges::lvalue_container_like__concept_ = implicitly_convertible_to<detail::is_lvalue_container_like_t<T>, std::true_type> |
|
template<typename T , typename V > |
concept | ranges::output_range |
|
template<typename T , typename V > |
concept | ranges::output_range__concept_ = output_iterator<iterator_t<T>, V> |
|
template<typename T > |
concept | ranges::random_access_range |
|
template<typename T > |
concept | ranges::random_access_range__concept_ = random_access_iterator<iterator_t<T>> |
|
template<typename C > |
concept | ranges::random_access_reservable |
|
template<typename T > |
concept | ranges::range |
|
constexpr _rbegin_::fn | ranges::rbegin {} |
|
constexpr _rend_::fn | ranges::rend {} |
|
template<typename C > |
concept | ranges::reservable |
|
template<typename C > |
concept | ranges::reservable__requires_ = CPP_REQUIRES_requires `(C & c, C const & cc) ( c.reserve(ranges::size(c)), cc.capacity(), cc.max_size(), concepts::requires_<same_as<decltype(cc.capacity()), decltype(ranges::size(c))>>, concepts::requires_<same_as<decltype(cc.max_size()), decltype(ranges::size(c))>> ) |
|
template<typename C , typename I > |
concept | ranges::reservable_with_assign |
|
template<typename C , typename I > |
concept | ranges::reservable_with_assign__requires_ = CPP_REQUIRES_requires `(C & c, I i) ( c.assign(i, i) ) |
|
template<typename T > |
concept | ranges::semi_container |
|
constexpr _size_::fn | ranges::size {} |
|
template<typename T > |
concept | ranges::sized_range |
|
template<typename T > |
concept | ranges::sized_range__concept_ = detail::integer_like_<range_size_t<T>> |
|
template<typename T > |
concept | ranges::sized_range__requires_ = CPP_REQUIRES_requires `(T & t) ( ranges::size(t) ) |
|
constexpr detail::to_container_fn< detail::from_range< std::vector > > | ranges::to_vector {} |
|
template<typename T > |
concept | ranges::view_ |
| View concepts below. More...
|
|
template<typename T > |
concept | ranges::viewable_range |
|