C++编译时断言
C++自 C++11 起支持 static_assert 编译时断言,如:
1 | static_assert ( bool_constexpr , message ) (C++11 起) |
如果编译器不支持 C++11(经测试 VS2010 已经支持static_assert),我们可以使用下面方式来实现编译断言:
1 |
使用方法:
1 | COMPILE_ASSERT(1 != 1); |
上述方式虽然能实现编译断言,但缺点也很明显:
- 错误提示信息的可读性较差;
- 表达式必须是一个编译期常量表达式;
- 无法使用在模板元编程中。
强烈建议拥抱新标准,使用 static_assert,做一个开心的人!