26 #ifdef SEQAN3_DEPRECATED_310
27 namespace seqan3::detail
39 constexpr
auto operator()(
size_t drop_size)
const noexcept
41 return detail::adaptor_from_functor{*
this, drop_size};
47 template <std::ranges::range urng_t>
48 constexpr
auto operator()(urng_t && urange,
size_t drop_size)
const
50 static_assert(std::ranges::viewable_range<urng_t>,
51 "The views::drop adaptor can only be passed viewable_ranges, i.e. Views or &-to-non-View.");
53 [[maybe_unused]]
size_t new_size = -1;
56 if constexpr (std::ranges::sized_range<urng_t>)
60 drop_size =
std::min(drop_size, urange_size);
61 new_size = urange_size - drop_size;
68 return urange.substr(drop_size);
78 else if constexpr (std::ranges::borrowed_range<urng_t> &&
79 std::ranges::contiguous_range<urng_t> &&
80 std::ranges::sized_range<urng_t>)
83 return std::span{std::ranges::data(urange) + drop_size, new_size};
86 else if constexpr (std::ranges::borrowed_range<urng_t> &&
87 std::ranges::random_access_range<urng_t> &&
88 std::ranges::sized_range<urng_t>)
91 return std::ranges::subrange<std::ranges::iterator_t<urng_t>, std::ranges::iterator_t<urng_t>>
101 using drop_size_t = std::ranges::range_difference_t<urng_t>;
103 return std::views::drop(std::forward<urng_t>(urange),
static_cast<drop_size_t
>(drop_size));
Provides seqan3::detail::adaptor_from_functor.
Provides type traits for working with templates.
constexpr size_t size
The size of a type pack.
Definition: traits.hpp:151
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:180
Provides exceptions used in the I/O module.
Provides C++20 additions to the <iterator> header.
The SeqAn namespace for views.
Definition: char_to.hpp:22
Adaptations of concepts from the Ranges TS.
Provides std::span from the C++20 standard library.
Provides C++20 additions to the type_traits header.