33a34,35
> #include "config/have_static_assert.hh"
>
58a61,88
> /*
> * Define a compatibility macro that emulates the behavior of
> * static_assert using template magic if the compiler doesn't have
> * native support.
> */
> #if !HAVE_STATIC_ASSERT
>
> template<bool>
> struct static_assert_failure;
>
> template<>
> struct static_assert_failure<false> {};
>
> /* The following macro causes the compiler to evaluate the size of the
> * static_assert_failure struct. The templates are designed so that
> * only static_assert_failure<false> evaluates to a proper size, while
> * static_assert_failure<true> generates a compile time error.
> */
> #define static_assert(expr, msg) \
> namespace ns_static_assert { \
> enum { \
> static_assert_ ## __LINE__ = \
> sizeof(static_assert_failure<!(expr)>) \
> }; \
> }
>
> #endif
>