aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/std
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2025-07-15 15:17:23 -0400
committerPatrick Palka <ppalka@redhat.com>2025-07-15 15:17:23 -0400
commit0828600f586e75a2056a4fc7eb0a340c363d6c66 (patch)
tree3498358d380fd90c5001ba7e9497419eb8a1b02f /libstdc++-v3/testsuite/std
parent35b19980046fc57d9d6851b8f4349bd22de3fa03 (diff)
downloadgcc-0828600f586e75a2056a4fc7eb0a340c363d6c66.zip
gcc-0828600f586e75a2056a4fc7eb0a340c363d6c66.tar.gz
gcc-0828600f586e75a2056a4fc7eb0a340c363d6c66.tar.bz2
libstdc++: Add missing initializers for __maybe_present_t members [PR119962]
Data members of type __maybe_present_t where the conditionally present type might be an aggregate or fundamental type need to be explicitly value-initialized (rather than implicitly default-initialized), so that default-initialization of the containing class always results in an completely initialized object. PR libstdc++/119962 libstdc++-v3/ChangeLog: * include/std/ranges (join_view::_Iterator::_M_outer): Initialize. (lazy_split_view::_OuterIter::_M_current): Initialize. (join_with_view::_Iterator::_M_outer_it): Initialize. * testsuite/std/ranges/adaptors/join.cc (test15): New test. * testsuite/std/ranges/adaptors/join_with/1.cc (test05): New test. * testsuite/std/ranges/adaptors/lazy_split.cc (test13): New test. Reviewed-by: Tomasz KamiƄski <tkaminsk@redhat.com> Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Diffstat (limited to 'libstdc++-v3/testsuite/std')
-rw-r--r--libstdc++-v3/testsuite/std/ranges/adaptors/join.cc8
-rw-r--r--libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc8
-rw-r--r--libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc8
3 files changed, 24 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
index 2861115..a9395b4 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
@@ -233,6 +233,13 @@ test14()
VERIFY( ranges::equal(v | views::join, (int[]){1, 2, 3}) );
}
+void
+test15()
+{
+ // PR libstdc++/119962 - __maybe_present_t misses initialization
+ constexpr decltype(views::join(views::single(views::single(0))).begin()) it;
+}
+
int
main()
{
@@ -250,4 +257,5 @@ main()
test12();
test13();
test14();
+ test15();
}
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
index 8ab30a5..4d55c9d 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
@@ -94,6 +94,13 @@ test04()
return true;
}
+void
+test05()
+{
+ // PR libstdc++/119962 - __maybe_present_t misses initialization
+ constexpr decltype(views::join_with(views::single(views::single(0)), 0).begin()) it;
+}
+
int
main()
{
@@ -105,4 +112,5 @@ main()
#else
VERIFY(test04());
#endif
+ test05();
}
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
index 81fc60b..321ae27 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
@@ -232,6 +232,13 @@ test12()
return true;
}
+void
+test13()
+{
+ // PR libstdc++/119962 - __maybe_present_t misses initialization
+ constexpr decltype(views::lazy_split(views::single(0), 0).begin()) it;
+}
+
int
main()
{
@@ -247,4 +254,5 @@ main()
test10();
test11();
static_assert(test12());
+ test13();
}