Go to the documentation of this file.00001
00010
00011
00012
00013
00014 #ifndef ECL_ERRORS_COMPILE_TIME_ASSERT_HPP_
00015 #define ECL_ERRORS_COMPILE_TIME_ASSERT_HPP_
00016
00017
00018
00019
00020
00021 #include "macros.hpp"
00022
00023
00024
00025
00026
00027 namespace ecl {
00028
00029
00030
00031
00032
00037 template <bool> struct COMPILE_TIME_FAILURE;
00038
00039 template <> struct COMPILE_TIME_FAILURE<true> {};
00040
00041 template <int x> struct static_assert_test {};
00042
00043 };
00060 #define ecl_compile_time_assert( logical_expression ) \
00061 typedef ecl::static_assert_test<sizeof(ecl::COMPILE_TIME_FAILURE< static_cast<bool>(logical_expression) >)> JOIN(compile_time_check,__LINE__)
00062
00078
00079 #define ecl_verbose_compile_time_assert( logical_expression, message ) \
00080 { \
00081 ecl::COMPILE_TIME_FAILURE<( (logical_expression) != 0)> ERROR_##message; \
00082 (void)ERROR_##message; \
00083 }
00084
00085 #endif