From c6a7be9bdadf67dcc5496222129acadbb2dd0610 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 5 Nov 2019 15:56:57 +0000 Subject: [PATCH] Fix header for freestanding * include/std/version [!_GLIBCXX_HOSTED]: Do not define feature test macros for features that are only present in hosted builds. From-SVN: r277849 --- libstdc++-v3/ChangeLog | 3 + libstdc++-v3/include/std/version | 112 ++++++++++++++++++------------- 2 files changed, 67 insertions(+), 48 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c83c372d0c0..05f6a245335 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,8 @@ 2019-11-05 Jonathan Wakely + * include/std/version [!_GLIBCXX_HOSTED]: Do not define feature test + macros for features that are only present in hosted builds. + * include/bits/iterator_concepts.h (__iter_without_nested_types): Remove incorrect comment. diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version index a01a8b2fea1..2df13696668 100644 --- a/libstdc++-v3/include/std/version +++ b/libstdc++-v3/include/std/version @@ -35,7 +35,9 @@ #include // c++03 -#define __cpp_lib_incomplete_container_elements 201505 +#if _GLIBCXX_HOSTED +# define __cpp_lib_incomplete_container_elements 201505 +#endif #if !defined(__STRICT_ANSI__) // gnu++03 @@ -44,17 +46,22 @@ #if __cplusplus >= 201103L // c++11 -#define __cpp_lib_allocator_is_always_equal 201411 -#define __cpp_lib_allocator_traits_is_always_equal 201411 #define __cpp_lib_is_null_pointer 201309 #define __cpp_lib_result_of_sfinae 201210 -#define __cpp_lib_shared_ptr_arrays 201611L + +#if _GLIBCXX_HOSTED +# define __cpp_lib_allocator_is_always_equal 201411 +# define __cpp_lib_allocator_traits_is_always_equal 201411 +# define __cpp_lib_shared_ptr_arrays 201611L +#endif #if !defined(__STRICT_ANSI__) // gnu++11 -# define __cpp_lib_enable_shared_from_this 201603 # define __cpp_lib_is_swappable 201603 # define __cpp_lib_void_t 201411 +# if _GLIBCXX_HOSTED +# define __cpp_lib_enable_shared_from_this 201603 +# endif #endif // For C++11 and later we support ISO/IEC 29124 Mathematical Special Functions @@ -62,52 +69,41 @@ #if __cplusplus >= 201402L // c++14 -#define __cpp_lib_chrono_udls 201304 -#define __cpp_lib_complex_udls 201309 -#define __cpp_lib_exchange_function 201304 -#define __cpp_lib_generic_associative_lookup 201304 -#define __cpp_lib_integer_sequence 201304 #define __cpp_lib_integral_constant_callable 201304 #define __cpp_lib_is_final 201402L -#define __cpp_lib_make_reverse_iterator 201402 -#define __cpp_lib_make_unique 201304 -#ifndef _GLIBCXX_DEBUG // PR libstdc++/70303 -# define __cpp_lib_null_iterators 201304L -#endif -#define __cpp_lib_quoted_string_io 201304 -#define __cpp_lib_robust_nonmodifying_seq_ops 201304 -#ifdef _GLIBCXX_HAS_GTHREADS -# define __cpp_lib_shared_timed_mutex 201402 -#endif -#define __cpp_lib_string_udls 201304 #define __cpp_lib_transformation_trait_aliases 201304 -#define __cpp_lib_transparent_operators 201510 -#define __cpp_lib_tuple_element_t 201402L -#define __cpp_lib_tuples_by_type 201304 + +#if _GLIBCXX_HOSTED +# define __cpp_lib_chrono_udls 201304 +# define __cpp_lib_complex_udls 201309 +# define __cpp_lib_exchange_function 201304 +# define __cpp_lib_generic_associative_lookup 201304 +# define __cpp_lib_integer_sequence 201304 +# define __cpp_lib_make_reverse_iterator 201402 +# define __cpp_lib_make_unique 201304 +# ifndef _GLIBCXX_DEBUG // PR libstdc++/70303 +# define __cpp_lib_null_iterators 201304L +# endif +# define __cpp_lib_quoted_string_io 201304 +# define __cpp_lib_robust_nonmodifying_seq_ops 201304 +# ifdef _GLIBCXX_HAS_GTHREADS +# define __cpp_lib_shared_timed_mutex 201402 +# endif +# define __cpp_lib_string_udls 201304 +# define __cpp_lib_transparent_operators 201510 +# define __cpp_lib_tuple_element_t 201402L +# define __cpp_lib_tuples_by_type 201304 +#endif #if __cplusplus >= 201703L // c++17 #define __cpp_lib_addressof_constexpr 201603 -#define __cpp_lib_any 201606L -#define __cpp_lib_apply 201603 -#define __cpp_lib_array_constexpr 201803 -#define __cpp_lib_as_const 201510 #define __cpp_lib_atomic_is_always_lock_free 201603 #define __cpp_lib_bool_constant 201505 -#define __cpp_lib_boyer_moore_searcher 201603 #define __cpp_lib_byte 201603 -#define __cpp_lib_chrono 201611 -#define __cpp_lib_clamp 201603 -#define __cpp_lib_constexpr_char_traits 201611 -#define __cpp_lib_enable_shared_from_this 201603 -#define __cpp_lib_filesystem 201703 -#define __cpp_lib_gcd 201606 -#define __cpp_lib_gcd_lcm 201606 #ifdef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP # define __cpp_lib_has_unique_object_representations 201606 #endif -#define __cpp_lib_hypot 201603 -#define __cpp_lib_invoke 201411L #ifdef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE # define __cpp_lib_is_aggregate 201703 #endif @@ -116,8 +112,27 @@ #ifdef _GLIBCXX_HAVE_BUILTIN_LAUNDER # define __cpp_lib_launder 201606 #endif -#define __cpp_lib_lcm 201606 #define __cpp_lib_logical_traits 201510 +#define __cpp_lib_type_trait_variable_templates 201510L +#define __cpp_lib_uncaught_exceptions 201411L +#define __cpp_lib_void_t 201411 + +#if _GLIBCXX_HOSTED +#define __cpp_lib_any 201606L +#define __cpp_lib_apply 201603 +#define __cpp_lib_array_constexpr 201803 +#define __cpp_lib_as_const 201510 +#define __cpp_lib_boyer_moore_searcher 201603 +#define __cpp_lib_chrono 201611 +#define __cpp_lib_clamp 201603 +#define __cpp_lib_constexpr_char_traits 201611 +#define __cpp_lib_enable_shared_from_this 201603 +#define __cpp_lib_filesystem 201703 +#define __cpp_lib_gcd 201606 +#define __cpp_lib_gcd_lcm 201606 +#define __cpp_lib_hypot 201603 +#define __cpp_lib_invoke 201411L +#define __cpp_lib_lcm 201606 #define __cpp_lib_make_from_tuple 201606 #define __cpp_lib_map_insertion 201411 #define __cpp_lib_map_try_emplace 201411 @@ -140,39 +155,40 @@ #define __cpp_lib_shared_ptr_weak_type 201606 #define __cpp_lib_string_view 201803 // #define __cpp_lib_to_chars 201611L -#define __cpp_lib_type_trait_variable_templates 201510L -#define __cpp_lib_uncaught_exceptions 201411L #define __cpp_lib_unordered_map_insertion 201411 #define __cpp_lib_unordered_map_try_emplace 201411 #define __cpp_lib_variant 201606L -#define __cpp_lib_void_t 201411 #define __cpp_lib_parallel_algorithm 201603L +#endif #if __cplusplus > 201703L // c++2a #define __cpp_lib_atomic_ref 201806L -#define __cpp_lib_bind_front 201907L #define __cpp_lib_bitops 201907L #define __cpp_lib_bounded_array_traits 201902L #if __cpp_concepts # define __cpp_lib_concepts 201806L #endif -#define __cpp_lib_constexpr_algorithms 201806L -#define __cpp_lib_constexpr_dynamic_alloc 201907L -#define __cpp_lib_constexpr_invoke 201907L #if __cpp_impl_destroying_delete # define __cpp_lib_destroying_delete 201806L #endif #define __cpp_lib_endian 201907L -#define __cpp_lib_erase_if 201900L -#define __cpp_lib_interpolate 201902L #ifdef _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED # define __cpp_lib_is_constant_evaluated 201811L #endif + +#if _GLIBCXX_HOSTED +#define __cpp_lib_bind_front 201907L +#define __cpp_lib_constexpr_algorithms 201806L +#define __cpp_lib_constexpr_dynamic_alloc 201907L +#define __cpp_lib_constexpr_invoke 201907L +#define __cpp_lib_erase_if 201900L +#define __cpp_lib_interpolate 201902L #define __cpp_lib_list_remove_return_type 201806L #define __cpp_lib_math_constants 201907L #define __cpp_lib_span 201902L #define __cpp_lib_to_array 201907L +#endif #endif // C++2a #endif // C++17 #endif // C++14 -- 2.30.2