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)
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> &&
131 template <
typename rng_t>
134 std::ranges::forward_range<rng_t> &&