@@ -153,24 +153,24 @@ template <input_range _Range>
153153join_with_view (_Range&&, range_value_t <range_reference_t <_Range>>)
154154 -> join_with_view<views::all_t <_Range>, single_view<range_value_t <range_reference_t <_Range>>>>;
155155
156- template <class _Base , class _PatternBase >
156+ template <class _Base , class _PatternBase , class _InnerBase = range_reference_t <_Base> >
157157struct __join_with_view_iterator_category {};
158158
159- template <class _Base , class _PatternBase >
160- requires is_reference_v<range_reference_t <_Base>> && forward_range<_Base> && forward_range<range_reference_t <_Base> >
161- struct __join_with_view_iterator_category <_Base, _PatternBase> {
159+ template <class _Base , class _PatternBase , class _InnerBase >
160+ requires is_reference_v<range_reference_t <_Base>> && forward_range<_Base> && forward_range<_InnerBase >
161+ struct __join_with_view_iterator_category <_Base, _PatternBase, _InnerBase > {
162162private:
163163 static consteval auto __get_iterator_category () noexcept {
164164 using _OuterC = iterator_traits<iterator_t <_Base>>::iterator_category;
165- using _InnerC = iterator_traits<iterator_t <range_reference_t <_Base> >>::iterator_category;
165+ using _InnerC = iterator_traits<iterator_t <_InnerBase >>::iterator_category;
166166 using _PatternC = iterator_traits<iterator_t <_PatternBase>>::iterator_category;
167167
168- if constexpr (!is_reference_v<common_reference_t <iter_reference_t <iterator_t <range_reference_t <_Base> >>,
168+ if constexpr (!is_reference_v<common_reference_t <iter_reference_t <iterator_t <_InnerBase >>,
169169 iter_reference_t <iterator_t <_PatternBase>>>>)
170170 return input_iterator_tag{};
171171 else if constexpr (derived_from<_OuterC, bidirectional_iterator_tag> &&
172172 derived_from<_InnerC, bidirectional_iterator_tag> &&
173- derived_from<_PatternC, bidirectional_iterator_tag> && common_range<range_reference_t <_Base> > &&
173+ derived_from<_PatternC, bidirectional_iterator_tag> && common_range<_InnerBase > &&
174174 common_range<_PatternBase>)
175175 return bidirectional_iterator_tag{};
176176 else if constexpr (derived_from<_OuterC, forward_iterator_tag> && derived_from<_InnerC, forward_iterator_tag> &&
0 commit comments