changeset 6329:ffad934ef3bd

* verify.h (verify_true): Provide alternative definition for C++.
author Paul Eggert <eggert@cs.ucla.edu>
date Wed, 05 Oct 2005 06:50:03 +0000
parents e1100f1eda79
children ba742d376820
files lib/ChangeLog lib/verify.h
diffstat 2 files changed, 14 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,7 @@
+2005-10-04  Bruno Haible  <bruno@clisp.org>
+
+	* verify.h (verify_true): Provide alternative definition for C++.
+
 2005-10-04  Simon Josefsson  <jas@extundo.com>
 
 	* getaddrinfo.h: Move sys/types.h include first, reported by "Mark
--- a/lib/verify.h
+++ b/lib/verify.h
@@ -36,9 +36,16 @@
 /* Verify requirement R at compile-time, as an integer constant expression.
    Return true.  */
 
-# define verify_true(R) \
-    (!!sizeof \
-     (struct { unsigned int verify_error_if_negative_size__ : (R) ? 1 : -1; }))
+# ifdef __cplusplus
+template <int w>
+  struct verify_type__ { unsigned int verify_error_if_negative_size__: w; };
+#  define verify_true(R) \
+     (!!sizeof (verify_type__<(R) ? 1 : -1>))
+# else
+#  define verify_true(R) \
+     (!!sizeof \
+      (struct { unsigned int verify_error_if_negative_size__: (R) ? 1 : -1; }))
+# endif
 
 /* Verify requirement R at compile-time, as a declaration without a
    trailing ';'.  */