41 template <
typename type>
44 std::ranges::input_range<std::remove_const_t<type>> &&
45 std::ranges::input_range<type const> &&
46 (std::ranges::forward_range<std::remove_const_t<type>> == std::ranges::forward_range<type const>) &&
48 (std::ranges::random_access_range<std::remove_const_t<type>> == std::ranges::random_access_range<type const>);
57 template <
typename type>
59 SEQAN3_CONCEPT
forwarding_range = std::ranges::range<type> && requires (type && val)
61 std::ranges::begin(std::forward<type>(val));
62 std::ranges::end(std::forward<type>(val));
96 template <
typename iterator_t>
99 std::forward_iterator<iterator_t> &&
103 std::sized_sentinel_for<iterator_t, iterator_t> &&
104 requires (iterator_t i, iterator_t
const j, std::iter_difference_t<iterator_t>
const n)
113 std::same_as<decltype( j[n] ), std::iter_reference_t<iterator_t>>;
131 template <
typename rng_t>
134 std::ranges::forward_range<rng_t> &&