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>);
81 template <
typename iterator_t>
84 std::forward_iterator<iterator_t> &&
87 std::totally_ordered<iterator_t> &&
88 std::sized_sentinel_for<iterator_t, iterator_t> &&
91 std::same_as<decltype( i += n ), iterator_t &>;
92 std::same_as<decltype( j + n ), iterator_t>;
93 std::same_as<decltype( n + j ), iterator_t>;
94 std::same_as<decltype( --i ), iterator_t &>;
95 std::same_as<decltype( i-- ), iterator_t>;
96 std::same_as<decltype( i -= n ), iterator_t &>;
97 std::same_as<decltype( j - n ), iterator_t>;
116 template <
typename rng_t>
119 std::ranges::forward_range<rng_t> &&
137 template <
typename rng_t>