@@ -44,7 +44,6 @@ template <class ElementT,
4444class any_view : public std ::ranges::view_interface<any_view<ElementT, OptionsV, RefT, RValueRefT, DiffT>> {
4545 using iterator_concept = decltype (detail::get_iterator_concept<OptionsV>());
4646 using iterator = detail::iterator<iterator_concept, ElementT, RefT, RValueRefT, DiffT>;
47- using sentinel = std::default_sentinel_t ;
4847 using size_type = std::make_unsigned_t <DiffT>;
4948
5049 static constexpr bool sized = (OptionsV & any_view_options::sized) == any_view_options::sized;
@@ -73,13 +72,11 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, OptionsV,
7372
7473 [[nodiscard]] constexpr auto begin () -> iterator
7574 requires(not simple);
76- [[nodiscard]] constexpr auto end () -> sentinel
77- requires(not simple);
7875
7976 [[nodiscard]] constexpr auto begin () const -> iterator
8077 requires simple;
81- [[nodiscard]] constexpr auto end () const -> sentinel
82- requires simple;
78+
79+ [[nodiscard]] constexpr auto end () const { return std::default_sentinel; }
8380
8481 [[nodiscard]] constexpr auto size () const -> size_type
8582 requires sized;
@@ -96,7 +93,6 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, RangeTrai
9693 using difference_type = detail::difference_type_or_t <std::ptrdiff_t , RangeTraitsT>;
9794 using iterator =
9895 detail::iterator<iterator_concept, ElementT, reference_type, rvalue_reference_type, difference_type>;
99- using sentinel = std::default_sentinel_t ;
10096 using size_type = std::make_unsigned_t <difference_type>;
10197
10298 static constexpr bool sized = detail::sized_or_v<false , RangeTraitsT>;
@@ -125,13 +121,11 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, RangeTrai
125121
126122 [[nodiscard]] constexpr auto begin () -> iterator
127123 requires(not simple);
128- [[nodiscard]] constexpr auto end () -> sentinel
129- requires(not simple);
130124
131125 [[nodiscard]] constexpr auto begin () const -> iterator
132126 requires simple;
133- [[nodiscard]] constexpr auto end () const -> sentinel
134- requires simple;
127+
128+ [[nodiscard]] constexpr auto end () const { return std::default_sentinel; }
135129
136130 [[nodiscard]] constexpr auto size () const -> size_type
137131 requires sized;
@@ -147,7 +141,6 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, OptionsV>
147141 using difference_type = decltype (OptionsV.difference_type)::type;
148142 using iterator =
149143 detail::iterator<iterator_concept, ElementT, reference_type, rvalue_reference_type, difference_type>;
150- using sentinel = std::default_sentinel_t ;
151144 using size_type = std::make_unsigned_t <difference_type>;
152145
153146 static constexpr bool sized = OptionsV.sized;
@@ -176,13 +169,11 @@ class any_view : public std::ranges::view_interface<any_view<ElementT, OptionsV>
176169
177170 [[nodiscard]] constexpr auto begin () -> iterator
178171 requires(not simple);
179- [[nodiscard]] constexpr auto end () -> sentinel
180- requires(not simple);
181172
182173 [[nodiscard]] constexpr auto begin () const -> iterator
183174 requires simple;
184- [[nodiscard]] constexpr auto end () const -> sentinel
185- requires simple;
175+
176+ [[nodiscard]] constexpr auto end () const { return std::default_sentinel; }
186177
187178 [[nodiscard]] constexpr auto size () const -> size_type
188179 requires sized;
0 commit comments