14 #ifndef RANGES_V3_VIEW_INDIRECT_HPP
15 #define RANGES_V3_VIEW_INDIRECT_HPP
18 #include <type_traits>
28 #include <range/v3/utility/static_const.hpp>
32 #include <range/v3/detail/prologue.hpp>
38 template<
typename Rng>
44 template<
bool IsConst>
47 friend adaptor<!IsConst>;
48 using CRng = meta::const_if_c<IsConst, Rng>;
52 requires IsConst && CPP_NOT(Other))
53 constexpr adaptor(adaptor<Other>) noexcept
63 return ranges::iter_move(*it)
69 constexpr
auto begin_adaptor() noexcept
70 -> CPP_ret(adaptor<false>)(
71 requires (!simple_view<Rng>()))
76 constexpr
auto begin_adaptor()
const noexcept
77 -> CPP_ret(adaptor<true>)(
78 requires range<Rng const>)
84 constexpr
auto end_adaptor() noexcept
85 -> CPP_ret(adaptor<false>)(
86 requires (!simple_view<Rng>()))
91 constexpr
auto end_adaptor()
const noexcept
92 -> CPP_ret(adaptor<true>)(
93 requires range<Rng const>)
101 : indirect_view::view_adaptor{detail::move(rng)}
104 constexpr
auto CPP_fun(size)()(
const
105 requires sized_range<Rng const>)
110 constexpr
auto CPP_fun(size)()(
111 requires sized_range<Rng>)
117 template<
typename Rng>
118 RANGES_INLINE_VAR constexpr
bool enable_borrowed_range<indirect_view<Rng>> =
119 enable_borrowed_range<Rng>;
121 #if RANGES_CXX_DEDUCTION_GUIDES >= RANGES_CXX_DEDUCTION_GUIDES_17
122 template<
typename Rng>
131 template(
typename Rng)(
132 requires viewable_range<Rng> AND input_range<Rng> AND
138 constexpr
auto operator()(Rng && rng)
const
151 #include <range/v3/detail/epilogue.hpp>
153 #include <range/v3/detail/satisfy_boost_range.hpp>
CPP_concept indirectly_readable
\concept indirectly_readable
Definition: concepts.hpp:147
decltype(begin(declval(Rng &))) iterator_t
Definition: access.hpp:698
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
meta::size_t< L::size()> size
An integral constant wrapper that is the size of the meta::list L.
Definition: meta.hpp:1696
Definition: adaptor.hpp:110
Definition: indirect.hpp:40
Definition: adaptor.hpp:475
Definition: indirect.hpp:130