From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1681225118; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=j+ajrpf4n7gOSIZAUEuT+42E0SAv14kg5hexA7+vVyo=; b=OdcupTN8RY5D/UU5bnODNprJeekXxnbM/jSpQw5WiVq/9DkTJZ+SMGc5PeZcNueb9Mb//c 9nLi/X1QBlQEBVZgK3aMqKaCFjiBSmGTOF7FRcAhGxrieEwZ7TRAvrDpOIjGrbItF1K1Zd xqgblq6EF6PKM32PCnybbJWyAWDIQK8= 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-Google-Smtp-Source: AKy350bKsX+rel8vAVaPT0/xHZAENrD2XG2rK0h8Yt2BKRjTEhFRyNqVweZx+1rzRlOVd5FxKG5yrg== 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) From: Patrick Palka 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 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true 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 List-Id: 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()); } -- 2.40.0.315.g0607f793cb