这里依赖于一个事实:声明下标大小为零或负数的数组是非法的。
举个例子
#define STATIC_CHECK(expr) { char unnamed[(expr) ? 1 : 0]; }
这种在编译期检查出错误可以增加程序的健壮性
这里设置一个模板的检查方式
template < bool > struct CompileTime;
template <>
struct CompileTime<true> {};
#define STATIC_CHECK(expr) (CompileTime <expr> != 0 > ( )
当检查到CompileTime<false>()的时候编译器会出错,因为这个是没有定义的

本文介绍了一种利用数组声明的特性来进行编译期错误检查的方法,并提供了一个模板元编程示例,展示了如何确保某些条件在编译阶段得到满足,以此增强程序的健壮性。

4784

被折叠的 条评论
为什么被折叠?



