#pragma once #include namespace cgv { namespace defines { template struct STATIC_ASSERTION_FAILURE; template <> struct STATIC_ASSERTION_FAILURE { enum { value = 1 }; }; template struct static_assert_test{}; } } #define CGV_DEFINES_ASSERT( ... ) \ typedef ::cgv::defines::static_assert_test<\ sizeof(::cgv::defines::STATIC_ASSERTION_FAILURE< (bool)( __VA_ARGS__ ) >)>\ CGV_DEFINES_JOIN(_static_assert_test_, __LINE__);