]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++/ranges: Implement LWG 3599 change to lazy_split_view master trunk
authorPatrick Palka <ppalka@redhat.com>
Fri, 10 Apr 2026 14:14:47 +0000 (10:14 -0400)
committerPatrick Palka <ppalka@redhat.com>
Fri, 10 Apr 2026 14:14:47 +0000 (10:14 -0400)
libstdc++-v3/ChangeLog:

* include/std/ranges (lazy_split_view::begin): Add
const _Pattern constraint on const overload as per LWG 3599.
(lazy_split_view::end): Likewise.
* testsuite/std/ranges/adaptors/lazy_split.cc (test14): New
test.

Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/include/std/ranges
libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc

index ca91e081ad4df103aa4d1172721e139b33e9f9e0..4f2082487d1d70985a8ca726da8594e23635cd01 100644 (file)
@@ -3807,8 +3807,12 @@ namespace views::__adaptor
          }
       }
 
+      // _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)};
       }
@@ -3826,7 +3830,8 @@ namespace views::__adaptor
       {
        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;
index 60ee7d70580ed74058dcaff32e2100a12f6ea546..1c69b8f27cfd8f2261be2929d5b498a4e4358d11 100644 (file)
@@ -239,6 +239,15 @@ test13()
   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()
 {
@@ -255,4 +264,5 @@ main()
   test11();
   static_assert(test12());
   test13();
+  test14();
 }