static_assert
static_assert 简单说就是一个在编译期执行的断言。例如,你可以这么做:
static_assert(sizeof(unsigned int) * CHAR_BIT == 32);
假设由于系统的原因造成了上述的逻辑判断的失败,那么 static_assert 就会断言失败。
它的另一种用途,是和 C++ 特征类型搭配使用。比如:
static_assert(std::is_pod<yourstruct>::value, "Not a pod struct!");
POD 是指“简单数据”(Plain Old Data)结构,也就是说,它是一个的类(你可以用struct关键字定义,也可以用class关键字定义),但没有构造函数,析构函数和虚成员函数。所以,如果一个愚蠢的菜鸟程序员企图给这种类型增加构造函数的话,static_assert 就会在编译的时候阻止这种行为,并报错。这对代码维护来说可是非常有用的。
注:相关教程知识阅读请移步到C++教程频道。










