]> Savannah Git Hosting - gnulib.git/commitdiff
verify: simplify static_assert configuration
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 13 Jan 2021 23:46:33 +0000 (15:46 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 14 Jan 2021 19:13:59 +0000 (11:13 -0800)
* lib/verify.h (_GL_HAVE__STATIC_ASSERT, _GL_HAVE__STATIC_ASSERT1):
Do not define for C++.  This should be good enough nowadays,
since recent-enough C++ compilers have static_assert.
(_GL_HAVE_STATIC_ASSERT_CXX11, _GL_HAVE_STATIC_ASSERT_CXX17):
Remove.  All uses replaced by simply checking __cpp_static_assert.

ChangeLog
lib/verify.h

index 2123974c876506abbde0c7301f8f1536438e3eec..8991d6a35451c32970e5a733124558d8e5c74602 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2021-01-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       verify: simplify static_assert configuration
+       * lib/verify.h (_GL_HAVE__STATIC_ASSERT, _GL_HAVE__STATIC_ASSERT1):
+       Do not define for C++.  This should be good enough nowadays,
+       since recent-enough C++ compilers have static_assert.
+       (_GL_HAVE_STATIC_ASSERT_CXX11, _GL_HAVE_STATIC_ASSERT_CXX17):
+       Remove.  All uses replaced by simply checking __cpp_static_assert.
+
 2021-01-13  Simon Josefsson  <simon@josefsson.org>
 
        lib-msvc-compat: Update libtool usage recommendation.
index a9e75890fc7f03e078487ed230ac672383f129f0..65514c34b9e9214de5a62ec239b7a1e9466f3741 100644 (file)
 
 
 /* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert (R, DIAGNOSTIC)
-   works as per C11.  This is supported by GCC 4.6.0 and later, in C
-   mode, and by clang (also in C++ mode).
+   works as per C11.  This is supported by GCC 4.6.0+ and by clang 4+.
 
    Define _GL_HAVE__STATIC_ASSERT1 to 1 if _Static_assert (R) works as
-   per C2X.  This is supported by GCC 9.1 and later, and by clang in
-   C++1z mode.
-
-   Define _GL_HAVE_STATIC_ASSERT_CXX11 if static_assert (R, DIAGNOSTIC)
-   works as per C++11.  This is supported by GCC 6.1 and later, and by
-   clang in C++11 mode.
-
-   Define _GL_HAVE_STATIC_ASSERT_CXX17 if static_assert (R) works as per
-   C++17.  This is supported by GCC 9.1 and later, and by clang in
-   C++1z mode.
+   per C2X.  This is supported by GCC 9.1+.
 
    Support compilers claiming conformance to the relevant standard,
    and also support GCC when not pedantic.  If we were willing to slow
       || (!defined __STRICT_ANSI__ && 9 <= __GNUC__))
 #  define _GL_HAVE__STATIC_ASSERT1 1
 # endif
-#else
-# if 4 <= __clang_major__
-#  define _GL_HAVE__STATIC_ASSERT 1
-# endif
-# if 4 <= __clang_major__ && 201411 <= __cpp_static_assert
-#  define _GL_HAVE__STATIC_ASSERT1 1
-# endif
-# if 201103L <= __cplusplus \
-     || 6 <= __GNUC__ \
-     || (4 <= __clang_major__ && 200410 <= __cpp_static_assert)
-#  define _GL_HAVE_STATIC_ASSERT_CXX11 1
-# endif
-# if 201703L <= __cplusplus \
-     || 9 <= __GNUC__ \
-     || (4 <= __clang_major__ && 201411 <= __cpp_static_assert)
-#  define _GL_HAVE_STATIC_ASSERT_CXX17 1
-# endif
 #endif
 
 /* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
@@ -234,7 +207,7 @@ template <int w>
    Unfortunately, unlike C11, this implementation must appear as an
    ordinary declaration, and cannot appear inside struct { ... }.  */
 
-#if defined _GL_HAVE_STATIC_ASSERT_CXX11
+#if 200410 <= __cpp_static_assert
 # define _GL_VERIFY(R, DIAGNOSTIC, ...) static_assert (R, DIAGNOSTIC)
 #elif defined _GL_HAVE__STATIC_ASSERT
 # define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC)
@@ -250,7 +223,7 @@ template <int w>
 #  define _Static_assert(...) \
      _GL_VERIFY (__VA_ARGS__, "static assertion failed", -)
 # endif
-# if !defined _GL_HAVE_STATIC_ASSERT_CXX17 && !defined static_assert
+# if __cpp_static_assert < 201411 && !defined static_assert
 #  define static_assert _Static_assert /* C11 requires this #define.  */
 # endif
 #endif