}
}
+ // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ // 3599. The const overload of lazy_split_view::begin should be
+ // constrained by const Pattern
constexpr auto
begin() const requires forward_range<_Vp> && forward_range<const _Vp>
+ && forward_range<const _Pattern>
{
return _OuterIter<true>{this, ranges::begin(_M_base)};
}
{
if constexpr (forward_range<_Vp>
&& forward_range<const _Vp>
- && common_range<const _Vp>)
+ && common_range<const _Vp>
+ && forward_range<const _Pattern>)
return _OuterIter<true>{this, ranges::end(_M_base)};
else
return default_sentinel;
constexpr decltype(views::lazy_split(views::single(0), 0).begin()) it;
}
+void
+test14()
+{
+ // LWG 3599
+ auto p = views::iota(0) | views::take(1) | views::reverse;
+ auto r = views::single(42) | views::lazy_split(p);
+ auto f = r.front();
+}
+
int
main()
{
test11();
static_assert(test12());
test13();
+ test14();
}