template struct CompileTimeChecker { CompileTimeChecker(...); }; template<> struct CompileTimeChecker { }; #define STATIC_CHECK(expr, msg) \ {\ class ERROR_##msg {}; \ (void)sizeof(CompileTimeChecker<(expr) != 0>((ERROR_##msg())));\ }