/*
* This file is part of the DXX-Rebirth project .
* It is copyright by its individual contributors, as recorded in the
* project's Git history. See COPYING.txt at the top level for license
* terms and a link to the Git history.
*/
#pragma once
#if defined(DXX_HAVE_CXX11_STATIC_ASSERT)
/* native */
#elif defined(DXX_HAVE_BOOST_STATIC_ASSERT)
#include
#define static_assert(C,M) BOOST_STATIC_ASSERT_MSG((C),M)
#elif defined(DXX_HAVE_C_TYPEDEF_STATIC_ASSERT)
#define static_assert(C,M) typedef int static_assertion_check[(C) ? 1 : -1];
#else
#error "No static_assert implementation found."
#endif
#define DEFINE_ASSERT_HELPER_CLASS(N,OP,STR) \
template \
class N \
{ \
static_assert(L OP R, STR); \
public: \
static const bool value = (L OP R); \
}
DEFINE_ASSERT_HELPER_CLASS(assert_equal, ==, "values must be equal");
#define assert_equal(L,R,S) static_assert(assert_equal::value, S)