37 constexpr
auto operator()(
size_t drop_size)
const noexcept
39 return detail::adaptor_from_functor{*
this, drop_size};
45 template <std::ranges::range urng_t>
46 constexpr
auto operator()(urng_t && urange,
size_t drop_size)
const 48 static_assert(std::ranges::viewable_range<urng_t>,
49 "The views::drop adaptor can only be passed viewable_ranges, i.e. Views or &-to-non-View.");
51 [[maybe_unused]]
size_t new_size = -1;
54 if constexpr (std::ranges::sized_range<urng_t>)
63 return urange.substr(drop_size);
66 else if constexpr (is_type_specialisation_of_v<remove_cvref_t<urng_t>,
std::basic_string> &&
72 else if constexpr (forwarding_range<urng_t> &&
73 std::ranges::contiguous_range<urng_t> &&
74 std::ranges::sized_range<urng_t>)
76 return std::span{std::ranges::data(urange) + drop_size, new_size};
79 else if constexpr (forwarding_range<urng_t> &&
80 std::ranges::random_access_range<urng_t> &&
81 std::ranges::sized_range<urng_t>)
83 return std::ranges::subrange<std::ranges::iterator_t<urng_t>, std::ranges::iterator_t<urng_t>>
85 std::ranges::begin(urange) + drop_size,
86 std::ranges::begin(urange) + drop_size + new_size,
168 inline constexpr
auto drop = detail::drop_fn{};
Provides exceptions used in the I/O module.
Provides C++20 additions to the <iterator> header.
Provides seqan3::type_list and auxiliary type traits.
The SeqAn namespace for views.
Definition: view_to_simd.hpp:672
Additional non-standard concepts for ranges.
Adaptations of concepts from the Ranges TS.
Provides std::span from the C++20 standard library.
constexpr size_t size
The size of a type pack.
Definition: traits.hpp:116
Definition: aligned_sequence_concept.hpp:36
constexpr auto drop
A view adaptor that returns all elements after n from the underlying range (or an empty range if the ...
Definition: drop.hpp:168
Provides C++20 additions to the type_traits header.
Auxiliary header for the views submodule .