From 7ffa63df8f5281bcd81bbb9842b698bc91fbb4fd Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 19 Sep 2023 17:46:32 +0100 Subject: libstdc++: Only declare feature test macros in standard headers This change moves the definitions of feature test macros (or strictly speaking, the requests for to define them) so that only standard headers define them. For example, will no longer define macros related to std::shared_ptr, only and will define them. This means that __cpp_lib_shared_ptr_arrays will not be defined by or by other headers that include . It will only be defined when 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 . 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 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 , because most of them include 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. --- libstdc++-v3/include/std/algorithm | 8 ++++++++ libstdc++-v3/include/std/array | 2 ++ libstdc++-v3/include/std/atomic | 3 +++ libstdc++-v3/include/std/chrono | 4 ++++ libstdc++-v3/include/std/condition_variable | 2 +- libstdc++-v3/include/std/deque | 1 + libstdc++-v3/include/std/format | 5 +++-- libstdc++-v3/include/std/forward_list | 5 ++++- libstdc++-v3/include/std/functional | 19 +++++++++++-------- libstdc++-v3/include/std/ios | 3 +++ libstdc++-v3/include/std/iterator | 7 +++++++ libstdc++-v3/include/std/list | 3 +++ libstdc++-v3/include/std/map | 7 +++++++ libstdc++-v3/include/std/memory | 14 ++++++++++++++ libstdc++-v3/include/std/numeric | 1 + libstdc++-v3/include/std/queue | 3 +++ libstdc++-v3/include/std/ranges | 1 + libstdc++-v3/include/std/regex | 3 +++ libstdc++-v3/include/std/scoped_allocator | 6 +++--- libstdc++-v3/include/std/set | 6 ++++++ libstdc++-v3/include/std/stack | 3 +++ libstdc++-v3/include/std/stop_token | 2 +- libstdc++-v3/include/std/string | 6 ++++++ libstdc++-v3/include/std/string_view | 1 + libstdc++-v3/include/std/tuple | 2 ++ libstdc++-v3/include/std/unordered_map | 7 +++++++ libstdc++-v3/include/std/unordered_set | 6 ++++++ libstdc++-v3/include/std/utility | 24 +++++++++++++++--------- libstdc++-v3/include/std/vector | 3 +++ 29 files changed, 132 insertions(+), 25 deletions(-) (limited to 'libstdc++-v3/include/std') 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 #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 #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 // std::index_sequence, std::tuple_size #include +#define __glibcxx_want_array_constexpr +#define __glibcxx_want_nonmember_container_access #define __glibcxx_want_to_array #include 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 #include 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 #endif +#define __glibcxx_want_chrono +#define __glibcxx_want_chrono_udls +#include + 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 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 #define __glibcxx_want_erase_if +#define __glibcxx_want_nonmember_container_access #include #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 // for std::string #define __glibcxx_want_format +#define __glibcxx_want_format_ranges #include #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 #if __cplusplus >= 201703L @@ -67,7 +70,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION template - 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 #include // 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 - #if __cplusplus >= 201103L #include @@ -82,6 +74,17 @@ # include #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 + #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 #include +#define __glibcxx_want_ios_noreplace +#include + #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 +#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 #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 #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 #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 + #if __cplusplus >= 201703L #include 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 #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 #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 /** 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 #include +#define __glibcxx_want_adaptor_iterator_pair_constructor +#include + #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 #include +#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 #include +#define __glibcxx_want_nonmember_container_access +#include + #if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI #include 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::type>; -#if ! __cpp_lib_make_obj_using_allocator +#if ! __glibcxx_make_obj_using_allocator template 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 __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 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 #endif +#define __glibcxx_want_erase_if +#define __glibcxx_want_generic_associative_lookup +#define __glibcxx_want_node_extract +#define __glibcxx_want_nonmember_container_access +#include + #if __cplusplus >= 201703L #include 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 #include +#define __glibcxx_want_adaptor_iterator_pair_constructor +#include + #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 #include +#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 #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 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 #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 + #if __cplusplus >= 201703L #include 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 #endif +#define __glibcxx_want_erase_if +#define __glibcxx_want_generic_unordered_lookup +#define __glibcxx_want_node_extract +#define __glibcxx_want_nonmember_container_access +#include + #if __cplusplus >= 201703L #include 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 #include -#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 - #if __cplusplus >= 201103L #include @@ -88,6 +79,21 @@ #include // __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 + 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 #endif +#define __glibcxx_want_constexpr_vector #define __glibcxx_want_erase_if +#define __glibcxx_want_incomplete_container_elements +#define __glibcxx_want_nonmember_container_access #include #if __cplusplus >= 201703L -- cgit v1.1