#pragma once

#include <cgv/defines/join.h>

namespace cgv {
	namespace defines {

template <bool x> struct STATIC_ASSERTION_FAILURE;
template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
template<int x> 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__);