1#ifndef RBIMPL_STATIC_ASSERT_H
2#define RBIMPL_STATIC_ASSERT_H
29#if defined(__cplusplus) && defined(__cpp_static_assert)
31# define RBIMPL_STATIC_ASSERT0 static_assert
33#elif defined(__cplusplus) && RBIMPL_COMPILER_SINCE(MSVC, 16, 0, 0)
34# define RBIMPL_STATIC_ASSERT0 static_assert
36#elif defined(__INTEL_CXX11_MODE__)
37# define RBIMPL_STATIC_ASSERT0 static_assert
39#elif defined(__cplusplus) && __cplusplus >= 201103L
40# define RBIMPL_STATIC_ASSERT0 static_assert
42#elif defined(__cplusplus) && RBIMPL_HAS_EXTENSION(cxx_static_assert)
43# define RBIMPL_STATIC_ASSERT0 __extension__ static_assert
45#elif defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__
46# define RBIMPL_STATIC_ASSERT0 __extension__ static_assert
48#elif defined(__STDC_VERSION__) && RBIMPL_HAS_EXTENSION(c_static_assert)
49# define RBIMPL_STATIC_ASSERT0 __extension__ _Static_assert
51#elif defined(__STDC_VERSION__) && RBIMPL_COMPILER_SINCE(GCC, 4, 6, 0)
52# define RBIMPL_STATIC_ASSERT0 __extension__ _Static_assert
54#elif defined(static_assert)
56# define RBIMPL_STATIC_ASSERT0 static_assert
66#if defined(__DOXYGEN__)
67# define RBIMPL_STATIC_ASSERT static_assert
69#elif defined(RBIMPL_STATIC_ASSERT0)
70# define RBIMPL_STATIC_ASSERT(name, expr) \
71 RBIMPL_STATIC_ASSERT0(expr, # name ": " # expr)
74# define RBIMPL_STATIC_ASSERT(name, expr) \
75 RBIMPL_ATTR_MAYBE_UNUSED() typedef int static_assert_ ## name ## _check[1 - 2 * !(expr)]
Defines RBIMPL_COMPILER_SINCE.
Defines RBIMPL_HAS_EXTENSION.
Defines RBIMPL_ATTR_MAYBE_UNUSED.