helpers: don't override C++11's built-in static_assert
The #ifndef doesn't work with the built-in static_assert from C++11, so it ends up getting redefined. It seems that there are other versions of static_assert internally in some C++ standard library implementations that have additional arguments, and these also get overwritten by the two-argument version here. Detect if we're using a suitably-recent version of C++ and avoid the redefintion in that case. Signed-off-by: Ray Smith <rsmith@brightsign.biz>
This commit is contained in:
parent
302a1b143f
commit
7b1520c4d9
|
@ -181,6 +181,7 @@ do { \
|
||||||
* @param cond Expression to check for truth
|
* @param cond Expression to check for truth
|
||||||
* @param msg Message to print on failure
|
* @param msg Message to print on failure
|
||||||
*/
|
*/
|
||||||
|
#if !(defined(__cplusplus) && __cplusplus >= 201103L)
|
||||||
#ifndef static_assert
|
#ifndef static_assert
|
||||||
# ifdef _Static_assert
|
# ifdef _Static_assert
|
||||||
# define static_assert(cond, msg) _Static_assert(cond, msg)
|
# define static_assert(cond, msg) _Static_assert(cond, msg)
|
||||||
|
@ -188,6 +189,7 @@ do { \
|
||||||
# define static_assert(cond, msg)
|
# define static_assert(cond, msg)
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Ensure argument is of given type */
|
/** Ensure argument is of given type */
|
||||||
#ifndef TYPEVERIFY
|
#ifndef TYPEVERIFY
|
||||||
|
|
Loading…
Reference in New Issue