static_assert
static_assert是编译时期的断言
static_assert的断言表达式的结果必须是在编译时期可以计算的表达式,即必须是常量表达式
- 静态断言接收两个参数:断言表达式和警告信息
#include <assert.h>
template <typename t, typename u> int bit_copy(t& a, u& b) {
static_assert(sizeof(b) == sizeof(a), "the parameters of bit_copy must have same width");
};
short x = 12;
int y = 32;
bit_copy<short, y>(x, y);
编译时期将得到如下信息:
error: static assertion failed: "the parameters of bit_copy must have same width"
- 静态断言可以独立任何调用之外
static_assert(sizeof(int) == 8, "This 64-bit machine should follow this!");
int main() { return 0; }