Skip to content

Commit b4afb2c

Browse files
committed
Add third template argument in __join_with_view_iterator_category
Comment: #65536 (comment)
1 parent 2370857 commit b4afb2c

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

libcxx/include/__ranges/join_with_view.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -153,24 +153,24 @@ template <input_range _Range>
153153
join_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>>
157157
struct __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> {
162162
private:
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

Comments
 (0)