100 template <
typename underlying_adaptor_t>
101 class deep :
public detail::adaptor_base<deep<underlying_adaptor_t>, underlying_adaptor_t>
105 using base_type = detail::adaptor_base<deep<underlying_adaptor_t>, underlying_adaptor_t>;
114 constexpr
deep() noexcept =
default;
115 constexpr
deep(
deep const &) noexcept =
default;
116 constexpr
deep(
deep &&) noexcept =
default;
119 ~deep() noexcept =
default;
121 using base_type::base_type;
127 using base_type::operator();
136 template <std::ranges::input_range urng_t,
typename underlying_adaptor_t_>
137 static constexpr
auto impl(urng_t && urange, underlying_adaptor_t_ && adap)
139 return std::forward<urng_t>(urange) | std::forward<underlying_adaptor_t_>(adap);
152 template <std::ranges::input_range urng_t>
154 requires std::ranges::input_range<reference_t<urng_t>>
156 constexpr
auto operator()(urng_t && urange)
const &
160 return std::forward<decltype(e)>(e) | me;
165 template <std::ranges::input_range urng_t>
167 requires std::ranges::input_range<reference_t<urng_t>>
169 constexpr
auto operator()(urng_t && urange) &&
173 return std::forward<decltype(e)>(e) | me;
185 template <
typename first_arg_t,
typename ...stored_arg_types>
187 requires !std::ranges::input_range<first_arg_t>
189 constexpr
auto operator()(first_arg_t && first, stored_arg_types && ...args)
const 194 auto adaptor_closure = std::get<0>(this->arguments)(std::forward<first_arg_t>(first),
195 std::forward<stored_arg_types>(args)...);
201 constexpr
auto operator()()
const 206 auto adaptor_closure = std::get<0>(this->arguments)();
223 template <std::ranges::input_range urng_t,
typename ...stored_arg_types>
225 requires
sizeof...(stored_arg_types) > 0
227 constexpr
auto operator()(urng_t && urange, stored_arg_types && ...args)
const 229 auto adaptor_closure = std::get<0>(this->arguments)(std::forward<stored_arg_types>(args)...);
230 return std::forward<urng_t>(urange) |
std::move(adaptor_closure);
237 template <
typename underlying_adaptor_t>
seqan3::type_list< trait_t< pack_t >... > transform
Apply a transformation trait to every type in the pack and return a seqan3::type_list of the results...
Definition: traits.hpp:307
The SeqAn namespace for views.
Definition: view_to_simd.hpp:672
Adaptations of concepts from the Ranges TS.
constexpr deep() noexcept=default
Defaulted.
A wrapper type around an existing view adaptor that enables "deep view" behaviour for that view...
Definition: deep.hpp:101
auto const move
A view that turns lvalue-references into rvalue-references.
Definition: move.hpp:68
~deep() noexcept=default
Defaulted.
constexpr deep & operator=(deep const &) noexcept=default
Defaulted.
Auxiliary header for the views submodule .