aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/23_containers
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2023-11-20 21:39:58 +0000
committerJonathan Wakely <jwakely@redhat.com>2023-11-21 15:58:21 +0000
commit43626143c9d4411353709bab09631d267bb4dadd (patch)
tree3e50a262d6063fd111b70a95675e86f98c4485f8 /libstdc++-v3/testsuite/23_containers
parent1fa85dcf656e2f2c7e483c9ed3c2680bf7db6858 (diff)
downloadgcc-43626143c9d4411353709bab09631d267bb4dadd.zip
gcc-43626143c9d4411353709bab09631d267bb4dadd.tar.gz
gcc-43626143c9d4411353709bab09631d267bb4dadd.tar.bz2
libstdc++: Add freestanding feature test macros (P2407R5)
This C++26 change makes several classes "partially freestanding", but we already fully supported them in freestanding mode. All we need to do is define the new feature test macros and add tests for them. libstdc++-v3/ChangeLog: * include/bits/version.def (freestanding_algorithm) (freestanding_array, freestanding_optional) (freestanding_string_view, freestanding_variant): Add. * include/bits/version.h: Regenerate. * include/std/algorithm (__glibcxx_want_freestanding_algorithm): Define. * include/std/array (__glibcxx_want_freestanding_array): Define. * include/std/optional (__glibcxx_want_freestanding_optional): Define. * include/std/string_view (__glibcxx_want_freestanding_string_view): Define. * include/std/variant (__glibcxx_want_freestanding_variant): Define. * testsuite/20_util/optional/version.cc: Add checks for __cpp_lib_freestanding_optional. * testsuite/20_util/variant/version.cc: Add checks for __cpp_lib_freestanding_variant. * testsuite/23_containers/array/tuple_interface/get_neg.cc: Adjust dg-error line numbers. * testsuite/21_strings/basic_string_view/requirements/version.cc: New test. * testsuite/23_containers/array/requirements/version.cc: New test. * testsuite/25_algorithms/fill_n/requirements/version.cc: New test. * testsuite/25_algorithms/swap_ranges/requirements/version.cc: New test.
Diffstat (limited to 'libstdc++-v3/testsuite/23_containers')
-rw-r--r--libstdc++-v3/testsuite/23_containers/array/requirements/version.cc19
-rw-r--r--libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc6
2 files changed, 22 insertions, 3 deletions
diff --git a/libstdc++-v3/testsuite/23_containers/array/requirements/version.cc b/libstdc++-v3/testsuite/23_containers/array/requirements/version.cc
new file mode 100644
index 0000000..1930805
--- /dev/null
+++ b/libstdc++-v3/testsuite/23_containers/array/requirements/version.cc
@@ -0,0 +1,19 @@
+// { dg-do preprocess { target c++23 } }
+// { dg-add-options no_pch }
+
+#include <array>
+
+#ifndef __cpp_lib_freestanding_array
+# error "Feature test macro for freestanding std::array is missing in <array>"
+#elif __cpp_lib_freestanding_array < 202311L
+# error "Feature test macro for freestanding std::array has wrong value in <array>"
+#endif
+
+#undef __cpp_lib_freestanding_array
+#include <version>
+
+#ifndef __cpp_lib_freestanding_array
+# error "Feature test macro for freestanding std::array is missing in <version>"
+#elif __cpp_lib_freestanding_array < 202311L
+# error "Feature test macro for freestanding std::array has wrong value in <version>"
+#endif
diff --git a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
index bf64d29..e1c92f85 100644
--- a/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
@@ -26,6 +26,6 @@ int n1 = std::get<1>(a);
int n2 = std::get<1>(std::move(a));
int n3 = std::get<1>(ca);
-// { dg-error "static assertion failed" "" { target *-*-* } 391 }
-// { dg-error "static assertion failed" "" { target *-*-* } 400 }
-// { dg-error "static assertion failed" "" { target *-*-* } 409 }
+// { dg-error "static assertion failed" "" { target *-*-* } 392 }
+// { dg-error "static assertion failed" "" { target *-*-* } 401 }
+// { dg-error "static assertion failed" "" { target *-*-* } 410 }