From f50fa20d76b2e4fb0020a3bd7e41347424290967 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Thu, 20 Apr 2023 08:42:56 +0200 Subject: 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. --- ChangeLog | 7 +++++++ lib/verify.h | 16 +++++++++++----- 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 + + 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 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 # define _Static_assert(...) \ _GL_VERIFY (__VA_ARGS__, "static assertion failed", -) # else - /* Work around MSVC preprocessor incompatibility with ISO C; see - . */ -# 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 + . */ +# define _Static_assert(R, ...) \ + _GL_VERIFY ((R), "static assertion failed", -) +# endif # endif # endif /* Define static_assert if needed. */ @@ -252,7 +258,7 @@ template && __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. -- cgit v1.2.1