summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2023-04-20 08:42:56 +0200
committerBruno Haible <bruno@clisp.org>2023-04-20 08:42:56 +0200
commitf50fa20d76b2e4fb0020a3bd7e41347424290967 (patch)
tree941bc9092efa86b56ed932ff90a7e62e7f89768d
parente5eacca5e2ee869d6e622f54d9a0309bc87f8254 (diff)
downloadgnulib-f50fa20d76b2e4fb0020a3bd7e41347424290967.tar.gz
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.
-rw-r--r--ChangeLog7
-rw-r--r--lib/verify.h16
2 files changed, 18 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 163a8e573a..72fac66c13 100644
--- 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.
diff --git a/lib/verify.h b/lib/verify.h
index c700243209..e4af91517e 100644
--- a/lib/verify.h
+++ b/lib/verify.h
@@ -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.