aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2023-09-19 17:46:32 +0100
committerJonathan Wakely <jwakely@redhat.com>2023-11-16 08:10:19 +0000
commit7ffa63df8f5281bcd81bbb9842b698bc91fbb4fd (patch)
tree1828257c5a386dfd1c9b81d68a5f36322c87820f /libstdc++-v3/include/std
parentf4ab68469ccffa83f23c321e8cb675b1eaf35f0c (diff)
downloadgcc-7ffa63df8f5281bcd81bbb9842b698bc91fbb4fd.zip
gcc-7ffa63df8f5281bcd81bbb9842b698bc91fbb4fd.tar.gz
gcc-7ffa63df8f5281bcd81bbb9842b698bc91fbb4fd.tar.bz2
libstdc++: Only declare feature test macros in standard headers
This change moves the definitions of feature test macros (or strictly speaking, the requests for <bits/version.h> to define them) so that only standard headers define them. For example, <bits/shared_ptr.h> will no longer define macros related to std::shared_ptr, only <memory> and <version> will define them. This means that __cpp_lib_shared_ptr_arrays will not be defined by <future> or by other headers that include <bits/shared_ptr.h>. It will only be defined when <memory> has been included. This will discourage users from relying on transitive includes. As a result, internal headers that need to query the macros should use the internal macros like __glibcxx_shared_ptr_arrays instead of __cpp_lib_shared_ptr_arrays, as those internal macros are defined by the internal headers after icluding <bits/version.h>. There are some exceptions to this rule, because __cpp_lib_is_constant_evaluated is defined by bits/c++config.h and so is available everywhere, and __cpp_lib_three_way_comparison is defined by <compare> which several headers are explicitly specified to include, so its macro is guaranteed to be usable too. N.B. not many internal headers actually need an explicit include of <bits/version.h>, because most of them include <type_traits> and so get all the __glibcxx_foo internal macros from there. libstdc++-v3/ChangeLog: * include/bits/algorithmfwd.h: Do not define standard feature test macro here. * include/bits/align.h: Likewise. Test internal macros instead of standard macros. * include/bits/alloc_traits.h: Likewise. * include/bits/allocator.h: Likewise. * include/bits/atomic_base.h: Likewise. * include/bits/atomic_timed_wait.h: Likewise. * include/bits/atomic_wait.h: Likewise. * include/bits/basic_string.h: Likewise. * include/bits/basic_string.tcc: Likewise. * include/bits/char_traits.h: Likewise. * include/bits/chrono.h: Likewise. * include/bits/cow_string.h: Likewise. * include/bits/forward_list.h: Likewise. * include/bits/hashtable.h: Likewise. * include/bits/ios_base.h: Likewise. * include/bits/memory_resource.h: Likewise. * include/bits/move.h: Likewise. * include/bits/move_only_function.h: Likewise. * include/bits/node_handle.h: Likewise. * include/bits/ptr_traits.h: Likewise. * include/bits/range_access.h: Likewise. * include/bits/ranges_algo.h: Likewise. * include/bits/ranges_cmp.h: Likewise. * include/bits/ranges_util.h: Likewise. * include/bits/semaphore_base.h: Likewise. * include/bits/shared_ptr.h: Likewise. * include/bits/shared_ptr_atomic.h: Likewise. * include/bits/shared_ptr_base.h: Likewise. * include/bits/stl_algo.h: Likewise. * include/bits/stl_algobase.h: Likewise. * include/bits/stl_function.h: Likewise. * include/bits/stl_iterator.h: Likewise. * include/bits/stl_list.h: Likewise. * include/bits/stl_map.h: Likewise. * include/bits/stl_pair.h: Likewise. * include/bits/stl_queue.h: Likewise. * include/bits/stl_stack.h: Likewise. * include/bits/stl_tree.h: Likewise. * include/bits/stl_uninitialized.h: Likewise. * include/bits/stl_vector.h: Likewise. * include/bits/unique_ptr.h: Likewise. * include/bits/unordered_map.h: Likewise. * include/bits/uses_allocator_args.h: Likewise. * include/bits/utility.h: Likewise. * include/bits/erase_if.h: Add comment. * include/std/algorithm: Define standard feature test macros here. * include/std/atomic: Likewise. * include/std/array: Likewise. * include/std/chrono: Likewise. * include/std/condition_variable: Likewise. * include/std/deque: Likewise. * include/std/format: Likewise. * include/std/functional: Likewise. * include/std/forward_list: Likewise. * include/std/ios: Likewise. * include/std/iterator: Likewise. * include/std/list: Likewise. * include/std/map: Likewise. * include/std/memory: Likewise. * include/std/numeric: Likewise. * include/std/queue: Likewise. * include/std/ranges: Likewise. * include/std/regex: Likewise. * include/std/set: Likewise. * include/std/stack: Likewise. * include/std/stop_token: Likewise. * include/std/string: Likewise. * include/std/string_view: * include/std/tuple: Likewise. * include/std/unordered_map: * include/std/unordered_set: * include/std/utility: Likewise. * include/std/vector: Likewise. * include/std/scoped_allocator: Query internal macros instead of standard macros.
Diffstat (limited to 'libstdc++-v3/include/std')
-rw-r--r--libstdc++-v3/include/std/algorithm8
-rw-r--r--libstdc++-v3/include/std/array2
-rw-r--r--libstdc++-v3/include/std/atomic3
-rw-r--r--libstdc++-v3/include/std/chrono4
-rw-r--r--libstdc++-v3/include/std/condition_variable2
-rw-r--r--libstdc++-v3/include/std/deque1
-rw-r--r--libstdc++-v3/include/std/format5
-rw-r--r--libstdc++-v3/include/std/forward_list5
-rw-r--r--libstdc++-v3/include/std/functional19
-rw-r--r--libstdc++-v3/include/std/ios3
-rw-r--r--libstdc++-v3/include/std/iterator7
-rw-r--r--libstdc++-v3/include/std/list3
-rw-r--r--libstdc++-v3/include/std/map7
-rw-r--r--libstdc++-v3/include/std/memory14
-rw-r--r--libstdc++-v3/include/std/numeric1
-rw-r--r--libstdc++-v3/include/std/queue3
-rw-r--r--libstdc++-v3/include/std/ranges1
-rw-r--r--libstdc++-v3/include/std/regex3
-rw-r--r--libstdc++-v3/include/std/scoped_allocator6
-rw-r--r--libstdc++-v3/include/std/set6
-rw-r--r--libstdc++-v3/include/std/stack3
-rw-r--r--libstdc++-v3/include/std/stop_token2
-rw-r--r--libstdc++-v3/include/std/string6
-rw-r--r--libstdc++-v3/include/std/string_view1
-rw-r--r--libstdc++-v3/include/std/tuple2
-rw-r--r--libstdc++-v3/include/std/unordered_map7
-rw-r--r--libstdc++-v3/include/std/unordered_set6
-rw-r--r--libstdc++-v3/include/std/utility24
-rw-r--r--libstdc++-v3/include/std/vector3
29 files changed, 132 insertions, 25 deletions
diff --git a/libstdc++-v3/include/std/algorithm b/libstdc++-v3/include/std/algorithm
index c6ebb86..d7fab41 100644
--- a/libstdc++-v3/include/std/algorithm
+++ b/libstdc++-v3/include/std/algorithm
@@ -63,7 +63,15 @@
# include <bits/ranges_algo.h>
#endif
+#define __glibcxx_want_clamp
+#define __glibcxx_want_constexpr_algorithms
#define __glibcxx_want_parallel_algorithm
+#define __glibcxx_want_ranges_contains
+#define __glibcxx_want_ranges_find_last
+#define __glibcxx_want_ranges_fold
+#define __glibcxx_want_robust_nonmodifying_seq_ops
+#define __glibcxx_want_sample
+#define __glibcxx_want_shift
#include <bits/version.h>
#if __cpp_lib_parallel_algorithm // C++ >= 17 && HOSTED
diff --git a/libstdc++-v3/include/std/array b/libstdc++-v3/include/std/array
index c4d534c..d34ec5c 100644
--- a/libstdc++-v3/include/std/array
+++ b/libstdc++-v3/include/std/array
@@ -45,6 +45,8 @@
#include <bits/utility.h> // std::index_sequence, std::tuple_size
#include <debug/assertions.h>
+#define __glibcxx_want_array_constexpr
+#define __glibcxx_want_nonmember_container_access
#define __glibcxx_want_to_array
#include <bits/version.h>
diff --git a/libstdc++-v3/include/std/atomic b/libstdc++-v3/include/std/atomic
index 713ee2c..09bbe2a 100644
--- a/libstdc++-v3/include/std/atomic
+++ b/libstdc++-v3/include/std/atomic
@@ -39,9 +39,12 @@
#else
#define __glibcxx_want_atomic_is_always_lock_free
+#define __glibcxx_want_atomic_flag_test
#define __glibcxx_want_atomic_float
#define __glibcxx_want_atomic_ref
#define __glibcxx_want_atomic_lock_free_type_aliases
+#define __glibcxx_want_atomic_value_initialization
+#define __glibcxx_want_atomic_wait
#include <bits/version.h>
#include <bits/atomic_base.h>
diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 10bdd1c..e4ba6ea 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -50,6 +50,10 @@
# include <bits/unique_ptr.h>
#endif
+#define __glibcxx_want_chrono
+#define __glibcxx_want_chrono_udls
+#include <bits/version.h>
+
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/condition_variable b/libstdc++-v3/include/std/condition_variable
index 5ed4d3b..a4c4f84 100644
--- a/libstdc++-v3/include/std/condition_variable
+++ b/libstdc++-v3/include/std/condition_variable
@@ -363,7 +363,7 @@ _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
const chrono::duration<_Rep, _Period>& __rtime, _Predicate __p)
{ return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); }
-#ifdef __cpp_lib_jthread
+#ifdef __glibcxx_jthread
template <class _Lock, class _Predicate>
bool wait(_Lock& __lock,
stop_token __stoken,
diff --git a/libstdc++-v3/include/std/deque b/libstdc++-v3/include/std/deque
index c0b05dd..e48dc996 100644
--- a/libstdc++-v3/include/std/deque
+++ b/libstdc++-v3/include/std/deque
@@ -69,6 +69,7 @@
#include <bits/deque.tcc>
#define __glibcxx_want_erase_if
+#define __glibcxx_want_nonmember_container_access
#include <bits/version.h>
#ifdef _GLIBCXX_DEBUG
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index 1e71725..8ec1c8a 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -34,6 +34,7 @@
#include <bits/requires_hosted.h> // for std::string
#define __glibcxx_want_format
+#define __glibcxx_want_format_ranges
#include <bits/version.h>
#ifdef __cpp_lib_format // C++ >= 20 && HOSTED
@@ -2041,7 +2042,7 @@ namespace __format
};
#endif
-#if defined __cpp_lib_to_chars
+#if defined __glibcxx_to_chars
/// Format a floating-point value.
template<__format::__formattable_float _Tp, __format::__char _CharT>
struct formatter<_Tp, _CharT>
@@ -3246,7 +3247,7 @@ namespace __format
return std::forward<_Visitor>(__vis)(_M_val._M_ll);
case _Arg_ull:
return std::forward<_Visitor>(__vis)(_M_val._M_ull);
-#if __cpp_lib_to_chars // FIXME: need to be able to format these types!
+#if __glibcxx_to_chars // FIXME: need to be able to format these types!
case _Arg_flt:
return std::forward<_Visitor>(__vis)(_M_val._M_flt);
case _Arg_dbl:
diff --git a/libstdc++-v3/include/std/forward_list b/libstdc++-v3/include/std/forward_list
index bd642a1..0870bc2 100644
--- a/libstdc++-v3/include/std/forward_list
+++ b/libstdc++-v3/include/std/forward_list
@@ -46,6 +46,9 @@
#endif
#define __glibcxx_want_erase_if
+#define __glibcxx_want_incomplete_container_elements
+#define __glibcxx_want_list_remove_return_type
+#define __glibcxx_want_nonmember_container_access
#include <bits/version.h>
#if __cplusplus >= 201703L
@@ -67,7 +70,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp, typename _Alloc, typename _Predicate>
- inline typename forward_list<_Tp, _Alloc>::size_type
+ inline typename forward_list<_Tp, _Alloc>::size_type
erase_if(forward_list<_Tp, _Alloc>& __cont, _Predicate __pred)
{ return __cont.remove_if(__pred); }
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 9551e38..729d11c 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -48,14 +48,6 @@
#include <bits/c++config.h>
#include <bits/stl_function.h> // std::equal_to, std::unary_function etc.
-#define __glibcxx_want_invoke
-#define __glibcxx_want_constexpr_functional
-#define __glibcxx_want_invoke_r
-#define __glibcxx_want_bind_front
-#define __glibcxx_want_not_fn
-#define __glibcxx_want_boyer_moore_searcher
-#include <bits/version.h>
-
#if __cplusplus >= 201103L
#include <tuple>
@@ -82,6 +74,17 @@
# include <bits/move_only_function.h>
#endif
+#define __glibcxx_want_boyer_moore_searcher
+#define __glibcxx_want_bind_front
+#define __glibcxx_want_constexpr_functional
+#define __glibcxx_want_invoke
+#define __glibcxx_want_invoke_r
+#define __glibcxx_want_move_only_function
+#define __glibcxx_want_not_fn
+#define __glibcxx_want_ranges
+#define __glibcxx_want_transparent_operators
+#include <bits/version.h>
+
#endif // C++11
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/ios b/libstdc++-v3/include/std/ios
index 80be29f..3f4ad1c 100644
--- a/libstdc++-v3/include/std/ios
+++ b/libstdc++-v3/include/std/ios
@@ -45,4 +45,7 @@
#include <streambuf>
#include <bits/basic_ios.h>
+#define __glibcxx_want_ios_noreplace
+#include <bits/version.h>
+
#endif /* _GLIBCXX_IOS */
diff --git a/libstdc++-v3/include/std/iterator b/libstdc++-v3/include/std/iterator
index 8c8670f..7461efb 100644
--- a/libstdc++-v3/include/std/iterator
+++ b/libstdc++-v3/include/std/iterator
@@ -67,7 +67,14 @@
#endif
#include <bits/range_access.h>
+#define __glibcxx_want_array_constexpr
+#define __glibcxx_want_constexpr_iterator
+#define __glibcxx_want_make_reverse_iterator
+#define __glibcxx_want_move_iterator_concept
+#define __glibcxx_want_nonmember_container_access
#define __glibcxx_want_null_iterators
+#define __glibcxx_want_ranges
+#define __glibcxx_want_ssize
#include <bits/version.h>
#if __cplusplus >= 202002L
diff --git a/libstdc++-v3/include/std/list b/libstdc++-v3/include/std/list
index 9841591..b5185a9 100644
--- a/libstdc++-v3/include/std/list
+++ b/libstdc++-v3/include/std/list
@@ -70,6 +70,9 @@
#endif
#define __glibcxx_want_erase_if
+#define __glibcxx_want_incomplete_container_elements
+#define __glibcxx_want_list_remove_return_type
+#define __glibcxx_want_nonmember_container_access
#include <bits/version.h>
#if __cplusplus >= 201703L
diff --git a/libstdc++-v3/include/std/map b/libstdc++-v3/include/std/map
index a0f3fce..008d8d3 100644
--- a/libstdc++-v3/include/std/map
+++ b/libstdc++-v3/include/std/map
@@ -69,6 +69,13 @@
# include <debug/map>
#endif
+#define __glibcxx_want_erase_if
+#define __glibcxx_want_generic_associative_lookup
+#define __glibcxx_want_map_try_emplace
+#define __glibcxx_want_node_extract
+#define __glibcxx_want_nonmember_container_access
+#include <bits/version.h>
+
#if __cplusplus >= 201703L
#include <bits/memory_resource.h>
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/memory b/libstdc++-v3/include/std/memory
index 3cce72c..ac83761 100644
--- a/libstdc++-v3/include/std/memory
+++ b/libstdc++-v3/include/std/memory
@@ -91,8 +91,22 @@
# include <bits/uses_allocator_args.h>
#endif
+#define __glibcxx_want_allocator_traits_is_always_equal
+#define __glibcxx_want_assume_aligned
+#define __glibcxx_want_atomic_shared_ptr
#define __glibcxx_want_atomic_value_initialization
+#define __glibcxx_want_constexpr_dynamic_alloc
+#define __glibcxx_want_constexpr_memory
+#define __glibcxx_want_enable_shared_from_this
+#define __glibcxx_want_make_unique
#define __glibcxx_want_parallel_algorithm
+#define __glibcxx_want_ranges
+#define __glibcxx_want_raw_memory_algorithms
+#define __glibcxx_want_shared_ptr_arrays
+#define __glibcxx_want_shared_ptr_weak_type
+#define __glibcxx_want_smart_ptr_for_overwrite
+#define __glibcxx_want_to_address
+#define __glibcxx_want_transparent_operators
#include <bits/version.h>
#if __cplusplus >= 201103L && __cplusplus <= 202002L && _GLIBCXX_HOSTED
diff --git a/libstdc++-v3/include/std/numeric b/libstdc++-v3/include/std/numeric
index 8c8d200..559e624 100644
--- a/libstdc++-v3/include/std/numeric
+++ b/libstdc++-v3/include/std/numeric
@@ -85,6 +85,7 @@
#define __glibcxx_want_interpolate
#define __glibcxx_want_lcm
#define __glibcxx_want_parallel_algorithm
+#define __glibcxx_want_ranges_iota
#include <bits/version.h>
/**
diff --git a/libstdc++-v3/include/std/queue b/libstdc++-v3/include/std/queue
index ec620ac..8980ba8 100644
--- a/libstdc++-v3/include/std/queue
+++ b/libstdc++-v3/include/std/queue
@@ -65,4 +65,7 @@
#include <bits/stl_function.h>
#include <bits/stl_queue.h>
+#define __glibcxx_want_adaptor_iterator_pair_constructor
+#include <bits/version.h>
+
#endif /* _GLIBCXX_QUEUE */
diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges
index 41f95dc..26d6c01 100644
--- a/libstdc++-v3/include/std/ranges
+++ b/libstdc++-v3/include/std/ranges
@@ -51,6 +51,7 @@
#include <bits/ranges_util.h>
#include <bits/refwrap.h>
+#define __glibcxx_want_ranges
#define __glibcxx_want_ranges_as_const
#define __glibcxx_want_ranges_as_rvalue
#define __glibcxx_want_ranges_cartesian_product
diff --git a/libstdc++-v3/include/std/regex b/libstdc++-v3/include/std/regex
index 7f63d86..ff33205 100644
--- a/libstdc++-v3/include/std/regex
+++ b/libstdc++-v3/include/std/regex
@@ -68,6 +68,9 @@
#include <bits/regex.h>
#include <bits/regex_executor.h>
+#define __glibcxx_want_nonmember_container_access
+#include <bits/version.h>
+
#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI
#include <bits/memory_resource.h>
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/scoped_allocator b/libstdc++-v3/include/std/scoped_allocator
index 8af432a..2f10479 100644
--- a/libstdc++-v3/include/std/scoped_allocator
+++ b/libstdc++-v3/include/std/scoped_allocator
@@ -196,7 +196,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
using __outermost_alloc_traits
= allocator_traits<typename __outermost_type<_Alloc>::type>;
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
template<typename _Tp, typename... _Args>
void
_M_construct(__uses_alloc0, _Tp* __p, _Args&&... __args)
@@ -373,7 +373,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
size_type max_size() const
{ return __traits::max_size(outer_allocator()); }
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
template<typename _Tp, typename... _Args>
typename __not_pair<_Tp>::type
construct(_Tp* __p, _Args&&... __args)
@@ -473,7 +473,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
const scoped_allocator_adaptor<_OutA2, _InA...>& __b) noexcept;
private:
-#if ! __cpp_lib_make_obj_using_allocator
+#if ! __glibcxx_make_obj_using_allocator
template<typename _Ind, typename... _Args>
tuple<_Args&&...>
_M_construct_p(__uses_alloc0, _Ind, tuple<_Args...>& __t)
diff --git a/libstdc++-v3/include/std/set b/libstdc++-v3/include/std/set
index 5641b79..55cabda 100644
--- a/libstdc++-v3/include/std/set
+++ b/libstdc++-v3/include/std/set
@@ -69,6 +69,12 @@
# include <debug/set>
#endif
+#define __glibcxx_want_erase_if
+#define __glibcxx_want_generic_associative_lookup
+#define __glibcxx_want_node_extract
+#define __glibcxx_want_nonmember_container_access
+#include <bits/version.h>
+
#if __cplusplus >= 201703L
#include <bits/memory_resource.h>
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/stack b/libstdc++-v3/include/std/stack
index 4cc89f0..dda18b6 100644
--- a/libstdc++-v3/include/std/stack
+++ b/libstdc++-v3/include/std/stack
@@ -62,4 +62,7 @@
#include <deque>
#include <bits/stl_stack.h>
+#define __glibcxx_want_adaptor_iterator_pair_constructor
+#include <bits/version.h>
+
#endif /* _GLIBCXX_STACK */
diff --git a/libstdc++-v3/include/std/stop_token b/libstdc++-v3/include/std/stop_token
index 3be0f5a..fce1cf5 100644
--- a/libstdc++-v3/include/std/stop_token
+++ b/libstdc++-v3/include/std/stop_token
@@ -109,7 +109,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
this_thread::yield();
}
-#ifndef __cpp_lib_semaphore
+#ifndef __glibcxx_semaphore
struct binary_semaphore
{
explicit binary_semaphore(int __d) : _M_counter(__d > 0) { }
diff --git a/libstdc++-v3/include/std/string b/libstdc++-v3/include/std/string
index 832e9d8..78e8bac 100644
--- a/libstdc++-v3/include/std/string
+++ b/libstdc++-v3/include/std/string
@@ -54,7 +54,13 @@
#include <bits/basic_string.h>
#include <bits/basic_string.tcc>
+#define __glibcxx_want_constexpr_char_traits
+#define __glibcxx_want_constexpr_string
#define __glibcxx_want_erase_if
+#define __glibcxx_want_nonmember_container_access
+#define __glibcxx_want_string_resize_and_overwrite
+#define __glibcxx_want_string_udls
+#define __glibcxx_want_to_string
#include <bits/version.h>
#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI
diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
index cf288ed3a..cbb6bb0 100644
--- a/libstdc++-v3/include/std/string_view
+++ b/libstdc++-v3/include/std/string_view
@@ -35,6 +35,7 @@
#pragma GCC system_header
+#define __glibcxx_want_constexpr_char_traits
#define __glibcxx_want_string_view
#define __glibcxx_want_constexpr_string_view
#define __glibcxx_want_starts_ends_with
diff --git a/libstdc++-v3/include/std/tuple b/libstdc++-v3/include/std/tuple
index 797d8c0..f2e008b 100644
--- a/libstdc++-v3/include/std/tuple
+++ b/libstdc++-v3/include/std/tuple
@@ -45,9 +45,11 @@
#endif
#define __glibcxx_want_constexpr_tuple
+#define __glibcxx_want_tuple_element_t
#define __glibcxx_want_tuples_by_type
#define __glibcxx_want_apply
#define __glibcxx_want_make_from_tuple
+#define __glibcxx_want_ranges_zip
#include <bits/version.h>
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/unordered_map b/libstdc++-v3/include/std/unordered_map
index b72845b..ec92492 100644
--- a/libstdc++-v3/include/std/unordered_map
+++ b/libstdc++-v3/include/std/unordered_map
@@ -46,6 +46,13 @@
# include <debug/unordered_map>
#endif
+#define __glibcxx_want_erase_if
+#define __glibcxx_want_generic_unordered_lookup
+#define __glibcxx_want_node_extract
+#define __glibcxx_want_nonmember_container_access
+#define __glibcxx_want_unordered_map_try_emplace
+#include <bits/version.h>
+
#if __cplusplus >= 201703L
#include <bits/memory_resource.h>
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/unordered_set b/libstdc++-v3/include/std/unordered_set
index 22a1c7c..b77b622 100644
--- a/libstdc++-v3/include/std/unordered_set
+++ b/libstdc++-v3/include/std/unordered_set
@@ -46,6 +46,12 @@
# include <debug/unordered_set>
#endif
+#define __glibcxx_want_erase_if
+#define __glibcxx_want_generic_unordered_lookup
+#define __glibcxx_want_node_extract
+#define __glibcxx_want_nonmember_container_access
+#include <bits/version.h>
+
#if __cplusplus >= 201703L
#include <bits/memory_resource.h>
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
index bdaf5d4..18bef7a 100644
--- a/libstdc++-v3/include/std/utility
+++ b/libstdc++-v3/include/std/utility
@@ -68,15 +68,6 @@
#include <bits/stl_relops.h>
#include <bits/stl_pair.h>
-#define __glibcxx_want_as_const
-#define __glibcxx_want_constexpr_algorithms
-#define __glibcxx_want_exchange_function
-#define __glibcxx_want_forward_like
-#define __glibcxx_want_integer_comparison_functions
-#define __glibcxx_want_to_underlying
-#define __glibcxx_want_unreachable
-#include <bits/version.h>
-
#if __cplusplus >= 201103L
#include <initializer_list>
@@ -88,6 +79,21 @@
#include <ext/numeric_traits.h> // __is_standard_integer, __int_traits
#endif
+#define __glibcxx_want_addressof_constexpr
+#define __glibcxx_want_as_const
+#define __glibcxx_want_constexpr_algorithms
+#define __glibcxx_want_constexpr_utility
+#define __glibcxx_want_exchange_function
+#define __glibcxx_want_forward_like
+#define __glibcxx_want_integer_comparison_functions
+#define __glibcxx_want_integer_sequence
+#define __glibcxx_want_ranges_zip
+#define __glibcxx_want_to_underlying
+#define __glibcxx_want_tuple_element_t
+#define __glibcxx_want_tuples_by_type
+#define __glibcxx_want_unreachable
+#include <bits/version.h>
+
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/std/vector b/libstdc++-v3/include/std/vector
index ecd9f71..5e1d54a 100644
--- a/libstdc++-v3/include/std/vector
+++ b/libstdc++-v3/include/std/vector
@@ -76,7 +76,10 @@
# include <debug/vector>
#endif
+#define __glibcxx_want_constexpr_vector
#define __glibcxx_want_erase_if
+#define __glibcxx_want_incomplete_container_elements
+#define __glibcxx_want_nonmember_container_access
#include <bits/version.h>
#if __cplusplus >= 201703L