aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/std
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2025-07-03 10:55:17 -0400
committerPatrick Palka <ppalka@redhat.com>2025-07-03 10:55:17 -0400
commitc5a17e92ebf0c6f3887fb5698a1114a3fdf50576 (patch)
tree641c4a6bbb604d85c3cada218052365def67f567 /libstdc++-v3/testsuite/std
parent13c766066e23eb6ddf6bad7a5664b9d3ca8c1974 (diff)
downloadgcc-c5a17e92ebf0c6f3887fb5698a1114a3fdf50576.zip
gcc-c5a17e92ebf0c6f3887fb5698a1114a3fdf50576.tar.gz
gcc-c5a17e92ebf0c6f3887fb5698a1114a3fdf50576.tar.bz2
libstdc++: Update LWG 4166 changes to concat_view::end() [PR120934]
In r15-4555-gf191c830154565 we proactively implemented the initial proposed resolution for LWG 4166 which later turned out to be insufficient, since we must also require equality_comparable of the underlying iterators before concat_view could be a common range. This patch implements the updated P/R, requiring all underlying iterators to be forward (which implies equality_comparable) before making concat_view common, which fixes the testcase from this PR. PR libstdc++/120934 libstdc++-v3/ChangeLog: * include/std/ranges (concat_view::end): Refine condition for returning an iterator instead of default_sentinel as per the updated P/R for LWG 4166. * testsuite/std/ranges/concat/1.cc (test05): New test. Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Diffstat (limited to 'libstdc++-v3/testsuite/std')
-rw-r--r--libstdc++-v3/testsuite/std/ranges/concat/1.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/std/ranges/concat/1.cc b/libstdc++-v3/testsuite/std/ranges/concat/1.cc
index 1672191..f78ed08 100644
--- a/libstdc++-v3/testsuite/std/ranges/concat/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/concat/1.cc
@@ -99,6 +99,18 @@ test04()
using type = decltype(v);
}
+void
+test05()
+{
+ // PR libstdc++/120934 - views::concat is ill-formed depending on argument order
+ auto v1 = views::single(1);
+ std::vector<int> vec = {2, 3};
+ auto v2 = views::join(views::transform(vec, views::single));
+
+ static_assert( ranges::range<decltype(views::concat(v1, v2))> );
+ static_assert( ranges::range<decltype(views::concat(v2, v1))> );
+}
+
int
main()
{
@@ -107,4 +119,5 @@ main()
test02();
test03();
test04();
+ test05();
}