This is definition is causing problems. Bug report: https://rt.perl.org/Ticket/Display.html?id=134023
Standalone test case: #!/bin/sh cat << EOF > AAAtest.cpp #include <assert.h> #ifndef static_assert #define static_assert theoretical fallback definition that doesnt happen #endif int main() { static_assert(sizeof(int) < sizeof(char), "some assertion"); return 0; } EOF c++ -ansi AAAtest.cpp ----- Forwarded message from Kamil Rytarowski <ka...@netbsd.org> ----- Date: Mon, 3 Oct 2016 12:08:39 +0000 From: Kamil Rytarowski <ka...@netbsd.org> To: source-changes-f...@netbsd.org Subject: CVS commit: src/include X-Mailer: log_accum Module Name: src Committed By: kamil Date: Mon Oct 3 12:08:39 UTC 2016 Modified Files: src/include: assert.h Log Message: Add static_assert macro definition in <assert.h> This declaration conforms to the C11 standard Reference: ISO/IEC 9899:201x 7.2 Diagnostics <assert.h> _Static_assert performs compile-time assertion checking. According to ISO/IEC 9899:201x (draft) 7.2 Diagnostics <assert.h> defines the static_assert macro which expands to _Static_assert. It's not conditionalized by NDEBUG like the assert macro. According to ISO/IEC N3242=11-0012 (C++1x) the <cassert> header shall define only the assert macro, but not static_assert as it's already part of the C++11 language. Allow to define static_assert in C++ prior the C++11 standard. It might be broken but a nonstandard C++ compiler might support C11-like _Static_assert feature. Note that it's fatal for g++ 5.4, but it works for clang++ 3.8.1. Approved by <joerg>. To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/include/assert.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/include/assert.h diff -u src/include/assert.h:1.21 src/include/assert.h:1.22 --- src/include/assert.h:1.21 Fri Aug 26 01:10:49 2011 +++ src/include/assert.h Mon Oct 3 12:08:39 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: assert.h,v 1.21 2011/08/26 01:10:49 joerg Exp $ */ +/* $NetBSD: assert.h,v 1.22 2016/10/03 12:08:39 kamil Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -104,3 +104,9 @@ void __diagassert(const char *, int, con void __diagassert13(const char *, int, const char *, const char *); __END_DECLS #endif /* __ASSERT_DECLARED */ + +#if ((__cplusplus - 0) < 201103L) +#ifndef static_assert +#define static_assert _Static_assert +#endif /* static_assert */ +#endif ----- End forwarded message -----