From f903c13ce8674c623f176eaf4516505205fefcf6 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 10 Sep 2020 18:51:24 +0100 Subject: [PATCH] libstdc++: Fix macro redefinition warnings Including after gives a warning about redefining the __cpp_lib_array_constexpr macro. What happens is that sets the C++20 value, then redefines it to the C++17 value, then undefines it and defines it again to the C++20 value. This change avoids defining it to the C++17 value when compiling C++20 or later (which also means we no longer need the #undef). A similar warning happens for __cpp_lib_constexpr_char_traits when including after any header that includes . libstdc++-v3/ChangeLog: * include/std/version (__cpp_lib_array_constexpr): (__cpp_lib_constexpr_char_traits): Only define C++17 value when compiling C++17. --- libstdc++-v3/include/std/version | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version index f64aff4f520..d5d42ed0a72 100644 --- a/libstdc++-v3/include/std/version +++ b/libstdc++-v3/include/std/version @@ -122,12 +122,16 @@ #if _GLIBCXX_HOSTED #define __cpp_lib_any 201606L #define __cpp_lib_apply 201603 -#define __cpp_lib_array_constexpr 201803L +#if __cplusplus == 201703L // N.B. updated value in C++20 +# define __cpp_lib_array_constexpr 201803L +#endif #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 201611L +#if __cplusplus == 201703L // N.B. updated value in C++20 +# define __cpp_lib_constexpr_char_traits 201611L +#endif #define __cpp_lib_enable_shared_from_this 201603 #define __cpp_lib_execution 201902L // FIXME: should be 201603L #define __cpp_lib_filesystem 201703 @@ -191,8 +195,6 @@ #define __cpp_lib_unwrap_ref 201811L #if _GLIBCXX_HOSTED -#undef __cpp_lib_array_constexpr -#undef __cpp_lib_constexpr_char_traits #define __cpp_lib_array_constexpr 201811L #define __cpp_lib_assume_aligned 201811L #define __cpp_lib_bind_front 201907L -- 2.30.2