template <bool>
struct CompileAssert {
};
#undef COMPILE_ASSERT
#define COMPILE_ASSERT(expr, msg) /
typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]
在编译时进行检查,由于struct CompileAssert为空,所以不占字节空间。
template <bool>
struct CompileAssert {
};
#undef COMPILE_ASSERT
#define COMPILE_ASSERT(expr, msg) /
typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]