]> Savannah Git Hosting - gnulib.git/commitdiff
assert-h, verify: Fix compilation error in C++ mode with MSVC 14.30.
authorBruno Haible <bruno@clisp.org>
Thu, 20 Apr 2023 06:42:56 +0000 (08:42 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 20 Apr 2023 06:42:56 +0000 (08:42 +0200)
* lib/verify.h (_Static_assert): In C++ mode with MSVC 14.1 or newer,
define merely to static_assert.
(static_assert): In C++ mode with MSVC 14.1 or newer, don't define.

ChangeLog
lib/verify.h

index 163a8e573aa8cb8c1025f2b8f965892a88db042c..72fac66c131b9047b7b4f55a19a8275367405d33 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2023-04-20  Bruno Haible  <bruno@clisp.org>
+
+       assert-h, verify: Fix compilation error in C++ mode with MSVC 14.30.
+       * lib/verify.h (_Static_assert): In C++ mode with MSVC 14.1 or newer,
+       define merely to static_assert.
+       (static_assert): In C++ mode with MSVC 14.1 or newer, don't define.
+
 2023-04-19  Bruno Haible  <bruno@clisp.org>
 
        chown, lchown tests: Fix link error on mingw 10.
index c700243209e50002269863e9a84ac50c2d5bbd0c..e4af91517e6336814ad24f1c2d141b6c65cedc8c 100644 (file)
@@ -241,10 +241,16 @@ template <int w>
 #   define _Static_assert(...) \
       _GL_VERIFY (__VA_ARGS__, "static assertion failed", -)
 #  else
-    /* Work around MSVC preprocessor incompatibility with ISO C; see
-       <https://stackoverflow.com/questions/5134523/>.  */
-#   define _Static_assert(R, ...) \
-      _GL_VERIFY ((R), "static assertion failed", -)
+#   if defined __cplusplus && _MSC_VER >= 1910
+     /* In MSVC 14.1 or newer, static_assert accepts one or two arguments,
+        but _Static_assert is not defined.  */
+#    define _Static_assert static_assert
+#   else
+     /* Work around MSVC preprocessor incompatibility with ISO C; see
+        <https://stackoverflow.com/questions/5134523/>.  */
+#    define _Static_assert(R, ...) \
+       _GL_VERIFY ((R), "static assertion failed", -)
+#   endif
 #  endif
 # endif
 /* Define static_assert if needed.  */
@@ -252,7 +258,7 @@ template <int w>
       && __STDC_VERSION__ < 202311 \
       && (!defined __cplusplus \
           || (__cpp_static_assert < 201411 \
-              && __GNUG__ < 6 && __clang_major__ < 6)))
+              && __GNUG__ < 6 && __clang_major__ < 6 && _MSC_VER < 1910)))
 #  if defined __cplusplus && _MSC_VER >= 1900 && !defined __clang__
 /* MSVC 14 in C++ mode supports the two-arguments static_assert but not
    the one-argument static_assert, and it does not support _Static_assert.