On Fri, Mar 13, 2020 at 03:12:34PM +0900, Michael Paquier wrote: > On Thu, Mar 12, 2020 at 09:43:54AM -0400, Tom Lane wrote: >> I don't feel a need to expend a whole lot of sweat there. The existing >> text is fine, it just bugged me that the code deals with three cases >> while the comment block only acknowledged two. So I'd just go with >> what you have in v3. > > Thanks, Tom. I have committed v3 then.
Hmm. v3 actually broke the C++ fallback of StaticAssertExpr() and StaticAssertStmt() (v1 did not), a simple fix being something like the attached. The buildfarm does not really care about that, but it could for example by using the only c++ code compiled in the tree in src/backend/jit/? That also means that only builds using --with-llvm with a compiler old enough would trigger that stuff. -- Michael
diff --git a/src/include/c.h b/src/include/c.h
index 6558801e5f..51db902fc3 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -860,8 +860,13 @@ extern void ExceptionalCondition(const char *conditionName,
static_assert(condition, errmessage)
#else
/* Fallback implementation for C and C++ */
+#ifndef __cplusplus
#define StaticAssertStmt(condition, errmessage) \
((void) sizeof(struct { int static_assert_failure : (condition) ? 1 : -1; }))
+#else
+#define StaticAssertStmt(condition, errmessage) \
+ do { struct static_assert_struct { int static_assert_failure : (condition) ? 1 : -1; }; } while(0)
+#endif /* __cplusplus */
#define StaticAssertExpr(condition, errmessage) \
StaticAssertStmt(condition, errmessage)
#define StaticAssertDecl(condition, errmessage) \
signature.asc
Description: PGP signature
