{"id":2220927,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2220927/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/20260408121941.4047772-1-ppalka@redhat.com/","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/1.1/projects/17/?format=json","name":"GNU Compiler Collection","link_name":"gcc","list_id":"gcc-patches.gcc.gnu.org","list_email":"gcc-patches@gcc.gnu.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260408121941.4047772-1-ppalka@redhat.com>","date":"2026-04-08T12:19:41","name":"libstdc++/ranges: Implement LWG 3599 change to lazy_split_view","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"12f6553e3768a279502af0af699ac6f1c651fe42","submitter":{"id":78319,"url":"http://patchwork.ozlabs.org/api/1.1/people/78319/?format=json","name":"Patrick Palka","email":"ppalka@redhat.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/20260408121941.4047772-1-ppalka@redhat.com/mbox/","series":[{"id":499132,"url":"http://patchwork.ozlabs.org/api/1.1/series/499132/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=499132","date":"2026-04-08T12:19:41","name":"libstdc++/ranges: Implement LWG 3599 change to lazy_split_view","version":1,"mbox":"http://patchwork.ozlabs.org/series/499132/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2220927/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2220927/checks/","tags":{},"headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=iasugizT;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=iasugizT","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frMbN3rSsz1yD6\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 08 Apr 2026 22:20:32 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 79D7F4BA2E24\n\tfor <incoming@patchwork.ozlabs.org>; Wed,  8 Apr 2026 12:20:30 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 9A01B4BA2E0E\n for <gcc-patches@gcc.gnu.org>; Wed,  8 Apr 2026 12:19:53 +0000 (GMT)","from mail-qt1-f200.google.com (mail-qt1-f200.google.com\n [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-249-KiiJHfo3Mm2DKMlRKyAxXA-1; Wed, 08 Apr 2026 08:19:52 -0400","by mail-qt1-f200.google.com with SMTP id\n d75a77b69052e-50b2955cc1eso9915881cf.2\n for <gcc-patches@gcc.gnu.org>; Wed, 08 Apr 2026 05:19:52 -0700 (PDT)","from idea ([2600:4040:aa66:bf00:9e8e:99ff:fed1:71f])\n by smtp.gmail.com with ESMTPSA id\n d75a77b69052e-50d712c2617sm124767011cf.31.2026.04.08.05.19.48\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 08 Apr 2026 05:19:49 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 79D7F4BA2E24","OpenDKIM Filter v2.11.0 sourceware.org 9A01B4BA2E0E"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 9A01B4BA2E0E","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 9A01B4BA2E0E","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775650793; cv=none;\n b=pVcWpIg1PPzeStAYfnvOzRM8iWKEQTJrR2iEpvRfd80SoVfjPLgVq1p7SHvQjuZcLij0UFieKiIubWny+ROohdGJRzSPC4OXTtM2FrFDtchDv4r7O4aiSyZ9RTlVAV971ImvGsWWA6k5H4HHA7aNs6SinjMkyFtH1XesKwcIUw0=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775650793; c=relaxed/simple;\n bh=4EnXe73kz881ODAzjZlZC6MhwGcchpdBFSEoqCdXsoc=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=JgpZ7dSKP68W5W0KMIsR7EhHIGLeWc1J9e3O3OTpbcKWqrTdRsaR2EQv6xVJphpvKFBvh/tBZgVnECthoiITTmDH5BJr4w5WF1blz7pNSbuXfWdmYQgtFEGsdR2GF5pqN3jQeSrAEFhCiWa1n5JuEvzjAY9I+WkMac3xlbcUd+M=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1775650793;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=iJbgSa4qRIUauyIkkmJy7uWqsrttqONd0QtoJgIEVi4=;\n b=iasugizTG5RZUOEg4xiwF3Dp8otukJqSQtpmLLo2fn2KKdBegCQyWTj/vBLLmjhQwdZaMA\n pli9+PqIRXPQ6STp9FvE6kEQnhIBiwhDqpy/HhnLG6zcwInkCM8tkTOVvr9IHszyDhGN7m\n XCImOrlTbE4xcFPyaml7W5q2b1dMTMk=","X-MC-Unique":"KiiJHfo3Mm2DKMlRKyAxXA-1","X-Mimecast-MFC-AGG-ID":"KiiJHfo3Mm2DKMlRKyAxXA_1775650792","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775650791; x=1776255591;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=iJbgSa4qRIUauyIkkmJy7uWqsrttqONd0QtoJgIEVi4=;\n b=Iz/lQkmZgva/J85xF74+t+yyrKqTiJcbdrPlwXlLar485wpds3mwFg4usYxSXS7eWs\n CXiGhJ1gv+FnxJ03vTlz/hP6nlfD8SnKYQaWJevdwAN/DxtWqh7uJzsdYjuGpHumUySE\n P0N1fQmb6lLnIG3FAqBJhr2pbdMAEjzImOz60uGx6o1J0gFKOz9u2BAJackKFTpYbSnG\n j8jUzWEmB/nfqxEaJWMzc+us5lzO0XG1cGwgMaHDPinO/9Mzy2ScPllRfrXXLL7oYzbL\n sc+ODydFy61HvqUbr7FzbveY2Q2QswvwXdv5fE/MEYeT70isQdndkh7d6FMj/okmT7LL\n FEAg==","X-Gm-Message-State":"AOJu0YwkVFjT6gdUtB8yjdk5FppOZ31OPbNqUNentAMpNIryDTPgurjo\n tztk9YsavB7F26dFyxCQJsTt7kXmWSg5X3O6rbLLqkjt+v2atnx3R2PMX3ht1pz+OZX1BmHOdTx\n aZUhwgmJQVkJQqYEN6MI5MSrr81pZdZfb4iClkLmV3L3kaz7ySvo8i+H8sfaP8tLbwGzS82RoMO\n EYhoo44APCBE1WX1H8V4euyIRVGq9lD+bVvOsnO2I+","X-Gm-Gg":"AeBDiesNMveDJ2SM/H5e2NAU3rZ0IRrsga5oljC14tZpmnfg508o7VAeBy5tr+SquLG\n t+qplk4/3r95JC8LfON6aAHKE2mfak44npjxPOrXL2vYW3WDUWUNXkZAfUHCuhlHGDBoHToVSUb\n 7uzrKyxk5Y5giJT3IXQK9B5N9XyCVENkRlNKf9W+R7OG1XPBgtuBcH4sKzcNQBVFErJxySthEcL\n KHOdnmXySqiHMQ288T7IA4M6JKtrphBfEhGH736lb9AjF3ewu8PojUM9trkbHDG1aKadciFA+bh\n iOg8t0D5uWoAThN51PbDCn7D6nZq5r4/GK/hdPA8wExu+dWFPcyc03qMR943TlZz7eOksxqPrfe\n K/dTTHmBfZ7Ga","X-Received":["by 2002:ac8:7d4d:0:b0:50b:8ccc:a41f with SMTP id\n d75a77b69052e-50db02d5f1dmr37236971cf.6.1775650790728;\n Wed, 08 Apr 2026 05:19:50 -0700 (PDT)","by 2002:ac8:7d4d:0:b0:50b:8ccc:a41f with SMTP id\n d75a77b69052e-50db02d5f1dmr37236471cf.6.1775650790196;\n Wed, 08 Apr 2026 05:19:50 -0700 (PDT)"],"From":"Patrick Palka <ppalka@redhat.com>","To":"gcc-patches@gcc.gnu.org","Cc":"libstdc++@gcc.gnu.org,\n\tPatrick Palka <ppalka@redhat.com>","Subject":"[PATCH] libstdc++/ranges: Implement LWG 3599 change to\n lazy_split_view","Date":"Wed,  8 Apr 2026 08:19:41 -0400","Message-ID":"<20260408121941.4047772-1-ppalka@redhat.com>","X-Mailer":"git-send-email 2.54.0.rc0.180.g7c4e9e957a","MIME-Version":"1.0","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"XZsD37jQCO_HOf85qErWgAsYBgo8kpJbzpVewFyiVdA_1775650792","X-Mimecast-Originator":"redhat.com","Content-Transfer-Encoding":"8bit","content-type":"text/plain; charset=\"US-ASCII\"; x-default=true","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"},"content":"Tested on x86_64-pc-linux-gnu, does this look OK for trunk/backports?\n\n-- >8 --\n\nlibstdc++-v3/ChangeLog:\n\n\t* include/std/ranges (lazy_split_view::begin): Add\n\tconst _Pattern contraint on const overload as per LWG 3599.\n\t(lazy_split_view::end): Likewise.\n\t* testsuite/std/ranges/adaptors/lazy_split.cc (test14): New\n\ttest.\n---\n libstdc++-v3/include/std/ranges                        |  4 +++-\n .../testsuite/std/ranges/adaptors/lazy_split.cc        | 10 ++++++++++\n 2 files changed, 13 insertions(+), 1 deletion(-)","diff":"diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges\nindex 0aa4191e04f6..41175fd45e4b 100644\n--- a/libstdc++-v3/include/std/ranges\n+++ b/libstdc++-v3/include/std/ranges\n@@ -3809,6 +3809,7 @@ namespace views::__adaptor\n \n       constexpr auto\n       begin() const requires forward_range<_Vp> && forward_range<const _Vp>\n+\t&& forward_range<const _Pattern>\n       {\n \treturn _OuterIter<true>{this, ranges::begin(_M_base)};\n       }\n@@ -3826,7 +3827,8 @@ namespace views::__adaptor\n       {\n \tif constexpr (forward_range<_Vp>\n \t\t      && forward_range<const _Vp>\n-\t\t      && common_range<const _Vp>)\n+\t\t      && common_range<const _Vp>\n+\t\t      && forward_range<const _Pattern>)\n \t  return _OuterIter<true>{this, ranges::end(_M_base)};\n \telse\n \t  return default_sentinel;\ndiff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc\nindex 60ee7d70580e..1c69b8f27cfd 100644\n--- a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc\n+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc\n@@ -239,6 +239,15 @@ test13()\n   constexpr decltype(views::lazy_split(views::single(0), 0).begin()) it;\n }\n \n+void\n+test14()\n+{\n+  // LWG 3599\n+  auto p = views::iota(0) | views::take(1) | views::reverse;\n+  auto r = views::single(42) | views::lazy_split(p);\n+  auto f = r.front();\n+}\n+\n int\n main()\n {\n@@ -255,4 +264,5 @@ main()\n   test11();\n   static_assert(test12());\n   test13();\n+  test14();\n }\n","prefixes":[]}