From 56a9eaf9abc9a7994c7e5f2ec157abace9b96167 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 15 Jan 2019 12:01:12 +0000 Subject: [PATCH] Fix missing or incorrect feature test macros * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2 status. * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms): Define. * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3 changes are supported. * include/std/optional (__cpp_lib_optional): Likewise. * include/std/variant (__cpp_lib_variant): Likewise. * include/std/version [!__STRICT_ANSI__] (__cpp_lib_uncaught_exceptions): Define as long integer. [__cplusplus >= 201703L] (__cpp_lib_any) (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions) (__cpp_lib_variant): Define for C++17. [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define as long integer. * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long integer. From-SVN: r267936 --- libstdc++-v3/ChangeLog | 18 +++++++++++++ .../doc/xml/manual/status_cxx2017.xml | 25 +++++++++++++++++++ libstdc++-v3/include/bits/stl_uninitialized.h | 6 +++-- libstdc++-v3/include/std/any | 2 +- libstdc++-v3/include/std/optional | 2 +- libstdc++-v3/include/std/variant | 2 +- libstdc++-v3/include/std/version | 8 ++++-- libstdc++-v3/libsupc++/exception | 4 +-- 8 files changed, 58 insertions(+), 9 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 79c2c344edf..dbb7d8e4b54 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,23 @@ 2019-01-15 Jonathan Wakely + * doc/xml/manual/status_cxx2017.xml: Document P0032R3 and P0307R2 + status. + * include/bits/stl_uninitialized.h (__cpp_lib_raw_memory_algorithms): + Define. + * include/std/any (__cpp_lib_any): Define as 201606L, because P0032R3 + changes are supported. + * include/std/optional (__cpp_lib_optional): Likewise. + * include/std/variant (__cpp_lib_variant): Likewise. + * include/std/version [!__STRICT_ANSI__] + (__cpp_lib_uncaught_exceptions): Define as long integer. + [__cplusplus >= 201703L] (__cpp_lib_any) + (__cpp_lib_raw_memory_algorithms, __cpp_lib_uncaught_exceptions) + (__cpp_lib_variant): Define for C++17. + [__cplusplus >= 201703L] (__cpp_lib_optional): Update value and define + as long integer. + * libsupc++/exception (__cpp_lib_uncaught_exceptions): Define as long + integer. + * doc/xml/manual/status_cxx2020.xml: Update P1123R0 status. 2019-01-12 Jonathan Wakely diff --git a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml index 0af8a02b00f..c9913a9e3a7 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx2017.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx2017.xml @@ -787,6 +787,31 @@ Feature-testing recommendations for C++. __cpp_lib_to_chars >= 201611 + + Homogeneous interface for variant, any and optional + + + P0032R3 + + + 7.1 + + __cpp_lib_any >= 201606 , + __cpp_lib_optional >= 201606 , + __cpp_lib_variant >= 201606 + + + + + Making Optional Greater Equal Again + + + P0307R2 + + + 7.1 + __cpp_lib_optional >= 201606 + diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h index a0c574dfc44..664e4ad8f00 100644 --- a/libstdc++-v3/include/bits/stl_uninitialized.h +++ b/libstdc++-v3/include/bits/stl_uninitialized.h @@ -826,7 +826,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif -#if __cplusplus > 201402L +#if __cplusplus >= 201703L +# define __cpp_lib_raw_memory_algorithms 201606L + template inline void uninitialized_default_construct(_ForwardIterator __first, @@ -877,7 +879,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __count, __result); return {__res.first.base(), __res.second}; } -#endif +#endif // C++17 #if __cplusplus >= 201103L template diff --git a/libstdc++-v3/include/std/any b/libstdc++-v3/include/std/any index 59d207181cf..385a99ce744 100644 --- a/libstdc++-v3/include/std/any +++ b/libstdc++-v3/include/std/any @@ -66,7 +66,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif } -#define __cpp_lib_any 201603 +#define __cpp_lib_any 201606L /** * @brief A type-safe container of any type. diff --git a/libstdc++-v3/include/std/optional b/libstdc++-v3/include/std/optional index c5e66bdd140..d243930fed4 100644 --- a/libstdc++-v3/include/std/optional +++ b/libstdc++-v3/include/std/optional @@ -51,7 +51,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @{ */ -#define __cpp_lib_optional 201603 +#define __cpp_lib_optional 201606L template class optional; diff --git a/libstdc++-v3/include/std/variant b/libstdc++-v3/include/std/variant index 83cf99e9ae0..89deb143097 100644 --- a/libstdc++-v3/include/std/variant +++ b/libstdc++-v3/include/std/variant @@ -68,7 +68,7 @@ namespace __variant } // namespace __variant } // namespace __detail -#define __cpp_lib_variant 201603 +#define __cpp_lib_variant 201606L template class tuple; template class variant; diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version index e9a1f1251af..f49a45940f9 100644 --- a/libstdc++-v3/include/std/version +++ b/libstdc++-v3/include/std/version @@ -39,7 +39,7 @@ #if !defined(__STRICT_ANSI__) // gnu++03 -# define __cpp_lib_uncaught_exceptions 201411 +# define __cpp_lib_uncaught_exceptions 201411L #endif #if __cplusplus >= 201103L @@ -85,6 +85,7 @@ #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 201603 #define __cpp_lib_as_const 201510 @@ -126,7 +127,8 @@ #define __cpp_lib_node_extract 201606 #define __cpp_lib_nonmember_container_access 201411 #define __cpp_lib_not_fn 201603 -#define __cpp_lib_optional 201603 +#define __cpp_lib_optional 201606L +#define __cpp_lib_raw_memory_algorithms 201606L #define __cpp_lib_sample 201603 #ifdef _GLIBCXX_HAS_GTHREADS # define __cpp_lib_scoped_lock 201703 @@ -135,8 +137,10 @@ #define __cpp_lib_shared_ptr_weak_type 201606 #define __cpp_lib_string_view 201603 #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 #if __cplusplus > 201703L diff --git a/libstdc++-v3/libsupc++/exception b/libstdc++-v3/libsupc++/exception index a90d38ee8e9..073bfdda42d 100644 --- a/libstdc++-v3/libsupc++/exception +++ b/libstdc++-v3/libsupc++/exception @@ -101,8 +101,8 @@ namespace std _GLIBCXX17_DEPRECATED bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++17 or gnu++98 -#define __cpp_lib_uncaught_exceptions 201411 +#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++98 +#define __cpp_lib_uncaught_exceptions 201411L /// The number of uncaught exceptions. int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); #endif