summaryrefslogtreecommitdiff
path: root/libstdc++-v3/include
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2022-04-14 10:28:03 +0100
committerJonathan Wakely <jwakely@redhat.com>2022-04-14 11:02:37 +0100
commitd2f8208e9add01fe10ee56307cc79631b9995f74 (patch)
treef7dfdca479701c951d7b5ed395ee389565ce51c8 /libstdc++-v3/include
parent8369b4e4c6433535981d377edc1d4abb799c9225 (diff)
libstdc++: Fix missing and incorrect feature test macros [PR105269]
libstdc++-v3/ChangeLog: PR libstdc++/105269 * include/bits/stl_vector.h (__cpp_lib_constexpr_vector): Define. * include/c_compatibility/stdatomic.h (__cpp_lib_stdatomic_h): Define. * include/std/optional (__cpp_lib_optional): Define new value for C++23. (__cpp_lib_monadic_optional): Remove. * include/std/version (__cpp_lib_constexpr_vector): Define. (__cpp_lib_stdatomic_h): Define. (__cpp_lib_optional): Define new value for C++23. (__cpp_lib_monadic_optional): Remove. * testsuite/20_util/optional/monadic/and_then.cc: Adjust. * testsuite/20_util/optional/requirements.cc: Adjust for C++23. * testsuite/20_util/optional/version.cc: Likewise. * testsuite/23_containers/vector/cons/constexpr.cc: Check feature test macro. * testsuite/29_atomics/headers/stdatomic.h/c_compat.cc: Likewise. * testsuite/20_util/optional/monadic/version.cc: Removed. * testsuite/23_containers/vector/requirements/version.cc: New test. * testsuite/29_atomics/headers/stdatomic.h/version.cc: New test.
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r--libstdc++-v3/include/bits/stl_vector.h3
-rw-r--r--libstdc++-v3/include/c_compatibility/stdatomic.h2
-rw-r--r--libstdc++-v3/include/std/optional12
-rw-r--r--libstdc++-v3/include/std/version5
4 files changed, 14 insertions, 8 deletions
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index 8e2fcc6f49b..b4ff3989a5d 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -62,8 +62,9 @@
#if __cplusplus >= 201103L
#include <initializer_list>
#endif
-#if __cplusplus > 201703L
+#if __cplusplus >= 202002L
# include <compare>
+#define __cpp_lib_constexpr_vector 201907L
#endif
#include <debug/assertions.h>
diff --git a/libstdc++-v3/include/c_compatibility/stdatomic.h b/libstdc++-v3/include/c_compatibility/stdatomic.h
index c97cbac984e..a51a84c2054 100644
--- a/libstdc++-v3/include/c_compatibility/stdatomic.h
+++ b/libstdc++-v3/include/c_compatibility/stdatomic.h
@@ -32,6 +32,8 @@
#if __cplusplus > 202002L
#include <atomic>
+#define __cpp_lib_stdatomic_h 202011L
+
#define _Atomic(_Tp) std::atomic<_Tp>
using std::memory_order;
diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional
index d6aece45fbf..791ef6f1994 100644
--- a/libstdc++-v3/include/std/optional
+++ b/libstdc++-v3/include/std/optional
@@ -60,10 +60,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
* @{
*/
-#if __cplusplus == 201703L
-# define __cpp_lib_optional 201606L
-#else
+#if __cplusplus > 202002L && __cpp_lib_concepts
+# define __cpp_lib_optional 202110L
+#elif __cplusplus >= 202002L
# define __cpp_lib_optional 202106L
+#else
+# define __cpp_lib_optional 201606L
#endif
template<typename _Tp>
@@ -1043,9 +1045,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
return static_cast<_Tp>(std::forward<_Up>(__u));
}
-#if __cplusplus > 202002L && __cpp_lib_concepts
-#define __cpp_lib_monadic_optional 202110L
-
+#if __cpp_lib_optional >= 202110L
// [optional.monadic]
template<typename _Fn>
diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version
index 51f2110b68e..d8ec658484f 100644
--- a/libstdc++-v3/include/std/version
+++ b/libstdc++-v3/include/std/version
@@ -257,6 +257,7 @@
#define __cpp_lib_constexpr_string_view 201811L
#define __cpp_lib_constexpr_tuple 201811L
#define __cpp_lib_constexpr_utility 201811L
+#define __cpp_lib_constexpr_vector 201907L
#define __cpp_lib_erase_if 202002L
#define __cpp_lib_generic_unordered_lookup 201811L
#define __cpp_lib_interpolate 201902L
@@ -312,7 +313,8 @@
#define __cpp_lib_invoke_r 202106L
#define __cpp_lib_ios_noreplace 202200L
#if __cpp_lib_concepts
-# define __cpp_lib_monadic_optional 202110L
+# undef __cpp_lib_optional
+# define __cpp_lib_optional 202110L
#endif
#define __cpp_lib_move_only_function 202110L
#if __cpp_lib_span
@@ -321,6 +323,7 @@
#if _GLIBCXX_HAVE_STACKTRACE
# define __cpp_lib_stacktrace 202011L
#endif
+#define __cpp_lib_stdatomic_h 202011L
#define __cpp_lib_string_contains 202011L
#if _GLIBCXX_USE_CXX11_ABI // Only supported with cxx11-abi
# define __cpp_lib_string_resize_and_overwrite 202110L