]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-118124: fix assert related C++ checks on Solaris/Illumos (GH-121974) (...
authorJakub Kulík <Kulikjak@gmail.com>
Mon, 22 Jul 2024 07:50:20 +0000 (09:50 +0200)
committerGitHub <noreply@github.com>
Mon, 22 Jul 2024 07:50:20 +0000 (07:50 +0000)
Fix check for static_assert() for C++ on some platforms..
(cherry picked from commit e88bd96d0d6cf8218c4fca37e1d20399ae676a04)

Include/pymacro.h

index b388c2a4a663ce2341197be17df6b424bb61db79..e3e9cd13594814e2fd38ea31885a9f371c19a616 100644 (file)
 // MSVC makes static_assert a keyword in C11-17, contrary to the standards.
 //
 // In C++11 and C2x, static_assert is a keyword, redefining is undefined
-// behaviour. So only define if building as C (if __STDC_VERSION__ is defined),
-// not C++, and only for C11-17.
+// behaviour. So only define if building as C, not C++ (if __cplusplus is
+// not defined), and only for C11-17.
 #if !defined(static_assert) && (defined(__GNUC__) || defined(__clang__)) \
-     && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \
-     && __STDC_VERSION__ <= 201710L
+     && !defined(__cplusplus) && defined(__STDC_VERSION__) \
+     && __STDC_VERSION__ >= 201112L && __STDC_VERSION__ <= 201710L
 #  define static_assert _Static_assert
 #endif
 
@@ -46,7 +46,8 @@
 /* Argument must be a char or an int in [-128, 127] or [0, 255]. */
 #define Py_CHARMASK(c) ((unsigned char)((c) & 0xff))
 
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
+#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L \
+     && !defined(__cplusplus))
 #  define Py_BUILD_ASSERT_EXPR(cond) \
     ((void)sizeof(struct { int dummy; _Static_assert(cond, #cond); }), \
      0)