From patchwork Tue Apr 11 14:58:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 82016 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp2637989vqo; Tue, 11 Apr 2023 07:59:50 -0700 (PDT) X-Google-Smtp-Source: AKy350YqFJv3rpULJprasmYF1kbXD89cGe7sSNHy2OHK2W2O6G1IA0Y2ZDlOX0Cydsk8vx/9Xk79 X-Received: by 2002:a17:906:3849:b0:94a:7920:e302 with SMTP id w9-20020a170906384900b0094a7920e302mr2943782ejc.66.1681225190666; Tue, 11 Apr 2023 07:59:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681225190; cv=none; d=google.com; s=arc-20160816; b=uwIfDFs7CX7oPlH/E+pMWmNnQctr9Jc+DGZULwTq0VJ0SMOUp5FYAI4LdIZGQ0Et8I X1xA3KISRa1ocW/+PaIqYTkKTKV1jEMx2IvdTYL/qIfiyU3NdLT4BdppA91JttWwS7c4 PvUFU8Rb/mhWWUY6bZE8fd2I+/L+b384U6TnjePV7Mad8jZg+IWXaDD2ay4X9NYz+iY/ 3RRABKQnhAJ11UsmdwSErLAPb1JK+VWIlEW6KDXukd4usvQ8f8cxf2+kpNG3tr6mEHei 0iG3HHlT6wv/4FjOUzytjzXS0Coz59L0qE/1tgtJo+J0mRG1AsmlRHbSblHxjHCsBQZP 9O4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=j+ajrpf4n7gOSIZAUEuT+42E0SAv14kg5hexA7+vVyo=; b=UNBNKWkSCeMZPldqMsky3UsvudD5GXgSfUpqkU14YiCFwc8vLvs3WLV/8TIJrgOkaC QaddTkchytYNj3AMtO1gaFtEPg3ePTkjExmv4MMXP3SYClbP8ywpZ59EqfQSFkQPdZQT /a525hULVPru0CruArAGmHJfRO7tJQUjqQ2LEuyUguzJv3hUGUOg5wTZ2cbey6t+6G2X w5haYnrlfeYo/ikYl710VVIcAM6d5oaU4+obLqmqj8oqsYkwvRpIWIRW+CdRcpTe2Vhb WvnvSrpDrUwQI4nb4J1Rq86dJsoJN+HxYwi4AjcrmvgoZ2hCUIYwp8JtcSWfeLRJQsxY aeQA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=nMfv9H5J; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id k24-20020a1709062a5800b009307879aebfsi10727662eje.415.2023.04.11.07.59.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 07:59:50 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=nMfv9H5J; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3A800385700F for ; Tue, 11 Apr 2023 14:59:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3A800385700F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1681225164; bh=j+ajrpf4n7gOSIZAUEuT+42E0SAv14kg5hexA7+vVyo=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=nMfv9H5JRAHFS6D0+C9AyJMLSr/T+uBnVlUICa341xOnRJjaRQF61h1uoOj7m7DL8 HDEOX3iU7IehQoLAIPaZYxxttli+tkjnbBMrI25q0kgIFXcJPke+jMEeZlg5dmPPE6 Zq5vbfx8omHmn7lly5Ue1NWs9mtskfSvpYFbmKSc= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 4B77B3858D32 for ; Tue, 11 Apr 2023 14:58:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4B77B3858D32 Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-570-Vfny6chQN46s_p1_ZbmTkg-1; Tue, 11 Apr 2023 10:58:36 -0400 X-MC-Unique: Vfny6chQN46s_p1_ZbmTkg-1 Received: by mail-qk1-f199.google.com with SMTP id a62-20020ae9e841000000b0074abdff4ccdso22310qkg.13 for ; Tue, 11 Apr 2023 07:58:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681225114; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=j+ajrpf4n7gOSIZAUEuT+42E0SAv14kg5hexA7+vVyo=; b=AtYjSZ9jBeF4DY3MxhNuZmGOZhKAYnT0X7dN1lXOPpnp0uRPg/fPo1zoP2blHYWDiG BmUT2iex5mx8w0Fqae+Wmj3S4x3SctOyRQR6LexyLNCKYvZOmhCOC2N6qzF2FOv45HqN bGIrrw/98s4E8dYGHW2rYNjzKa49UM/HG8ysB6uuWVzSV1EsQToI1sPoJlQHwYm9AC9h BBrSgAYFLtBzuFgGza7jQhOoGwcOzPAAWj/rndIa4AqK4nkwsGdT6hTH8pBqOMgw2EUA eORKsWcQrb8QaHFryWDJXzRhBhaF/JphdP5KKE82VM2f9XTBR9OwufVK4gpXD0WgY2Yb 7doQ== X-Gm-Message-State: AAQBX9d7/4j6AHfMt6/n8FZKAbyc5OT0Paov958AN19+Ndk9YqESC9Ow fJHQCU6VcgZO/oIc9KooVpPAcf6LuJVZ7sjYfYNdqhl2g/dexJS/FyJPKBB9H3ubQWn4j6p8pYp q98ZeCi5KMJs20mhEwHpWsWxQRVYSwIpeCK45pIOMhz7eP2+5HCr24rul0C76wp4J3wLV0Gzzyj o= X-Received: by 2002:ad4:5be7:0:b0:5c8:ad0d:3b7e with SMTP id k7-20020ad45be7000000b005c8ad0d3b7emr27967359qvc.35.1681225114745; Tue, 11 Apr 2023 07:58:34 -0700 (PDT) X-Received: by 2002:ad4:5be7:0:b0:5c8:ad0d:3b7e with SMTP id k7-20020ad45be7000000b005c8ad0d3b7emr27967324qvc.35.1681225114422; Tue, 11 Apr 2023 07:58:34 -0700 (PDT) Received: from localhost.localdomain (ool-457670bb.dyn.optonline.net. [69.118.112.187]) by smtp.gmail.com with ESMTPSA id d5-20020a0ce705000000b005e3bda8a5e0sm4204664qvn.6.2023.04.11.07.58.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Apr 2023 07:58:33 -0700 (PDT) To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Patrick Palka Subject: [PATCH] libstdc++: Implement LWG 3904 change to lazy_split_view's iterator Date: Tue, 11 Apr 2023 10:58:31 -0400 Message-Id: <20230411145831.2862333-1-ppalka@redhat.com> X-Mailer: git-send-email 2.40.0.315.g0607f793cb MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Patrick Palka via Gcc-patches From: Patrick Palka Reply-To: Patrick Palka Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762892385758685154?= X-GMAIL-MSGID: =?utf-8?q?1762892385758685154?= Tested on x86_64-pc-linux-gnu, does this look OK for trunk/12? libstdc++-v3/ChangeLog: * include/std/ranges (lazy_split_view::_OuterIter::_OuterIter): Propagate _M_trailing_empty in the const-converting constructor as per LWG 3904. * testsuite/std/ranges/adaptors/adjacent/1.cc (test04): Correct assertion. * testsuite/std/ranges/adaptors/lazy_split.cc (test12): New test. --- libstdc++-v3/include/std/ranges | 3 ++- .../testsuite/std/ranges/adaptors/adjacent/1.cc | 2 +- .../testsuite/std/ranges/adaptors/lazy_split.cc | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges index b230ebefcf5..26a9f2a6872 100644 --- a/libstdc++-v3/include/std/ranges +++ b/libstdc++-v3/include/std/ranges @@ -3209,7 +3209,8 @@ namespace views::__adaptor _OuterIter(_OuterIter __i) requires _Const && convertible_to, iterator_t<_Base>> - : _M_parent(__i._M_parent), _M_current(std::move(__i._M_current)) + : _M_parent(__i._M_parent), _M_current(std::move(__i._M_current)), + _M_trailing_empty(__i._M_trailing_empty) { } constexpr value_type diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc index 443c1fbf450..19640abfe93 100644 --- a/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc +++ b/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc @@ -107,7 +107,7 @@ test04() // PR libstdc++/106798 auto r = views::single(0) | views::lazy_split(0) | views::pairwise; decltype(ranges::cend(r)) s = r.end(); - VERIFY( r.begin() == s ); + VERIFY( r.begin() != s ); return true; } diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc index 9df6b3b66a6..4e5c0dc3ed5 100644 --- a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc +++ b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -218,6 +219,20 @@ test11() static_assert(ranges::distance(views::lazy_split("text"sv, ""sv)) == 4); } +constexpr bool +test12() +{ + // LWG 3904 + auto r = views::single(0) | views::lazy_split(0); + auto i = r.begin(); + ++i; + VERIFY( i != r.end() ); + decltype(std::as_const(r).begin()) j = i; + VERIFY( j != r.end() ); + + return true; +} + int main() { @@ -232,4 +247,5 @@ main() test09(); test10(); test11(); + static_assert(test12()); }