24 namespace seqan3::detail
33 class type_reduce_fn :
public adaptor_base<type_reduce_fn>
37 using base_t = adaptor_base<type_reduce_fn>;
50 template <std::ranges::range urng_t>
51 static constexpr
auto impl(urng_t && urange)
53 static_assert(std::ranges::viewable_range<urng_t>,
54 "The views::type_reduce adaptor can only be passed viewable_ranges, i.e. Views or &-to-non-View.");
59 return std::views::all(std::forward<urng_t>(urange));
68 else if constexpr (std::ranges::borrowed_range<urng_t> &&
69 std::ranges::contiguous_range<urng_t> &&
70 std::ranges::sized_range<urng_t>)
75 else if constexpr (std::ranges::borrowed_range<urng_t> &&
76 std::ranges::random_access_range<urng_t> &&
77 std::ranges::sized_range<urng_t>)
79 return std::ranges::subrange<std::ranges::iterator_t<urng_t>, std::ranges::iterator_t<urng_t>>
89 return std::views::all(std::forward<urng_t>(urange));
167 template <
typename t>