14 #ifndef RANGES_V3_VIEW_ENUMERATE_HPP
15 #define RANGES_V3_VIEW_ENUMERATE_HPP
23 #include <range/v3/detail/prologue.hpp>
33 template<
typename Size,
typename Diff>
34 struct index_view : view_facade<index_view<Size, Diff>, infinite>
41 using difference_type = Diff;
55 bool equal(cursor
const & that)
const
57 return that.index_ == index_;
65 index_ +=
static_cast<Size
>(n);
67 Diff distance_to(cursor
const & that)
const
69 return static_cast<Diff
>(
static_cast<Diff
>(that.index_) -
70 static_cast<Diff
>(index_));
76 cursor begin_cursor()
const
80 unreachable_sentinel_t end_cursor()
const
86 index_view() =
default;
91 template<
typename Size,
typename Diff>
92 RANGES_INLINE_VAR constexpr
bool enable_borrowed_range<detail::index_view<Size, Diff>> =
104 template(
typename Rng)(
105 requires viewable_range<Rng>)
106 auto operator()(Rng && rng)
const
108 using D = range_difference_t<Rng>;
109 using S = detail::iter_size_t<iterator_t<Rng>>;
110 return zip(detail::index_view<S, D>(), all(
static_cast<Rng &&
>(rng)));
121 #include <range/v3/detail/epilogue.hpp>
RANGES_INLINE_VARIABLE(detail::to_container_fn< detail::from_range< std::vector >>, to_vector) template< template< typename... > class ContT > auto to(RANGES_HIDDEN_DETAIL(detail
For initializing a container of the specified type with the elements of an Range.
Definition: conversion.hpp:399
Lazily pairs each element in a source range with its corresponding index.
Definition: enumerate.hpp:103