为什么自定义静态断言的实现不会立即静态断言“真”?

时间:2014-11-07 14:26:02

标签: c++ testing compilation compile-time static-assert

当C ++编译器没有内置static_assert时,有各种方法可以实现静态断言。这是Windows SDK中的一个例子(另一个着名的是来自Boost):< / p>

#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]

我从未见过的是这样一条线:

C_ASSERT(true);

紧跟静态断言实现之后。

立即测试至少你的静态断言不断言它不应该在哪里是不合理的吗?

为什么不立即检查它不断言?

1 个答案:

答案 0 :(得分:2)

测试是合理的,并且已经由#including测试给定的静态断言定义文件到一些测试源文件中。就像我们制作一个类一样,我们使用示例程序对它进行测试,静态断言在不同的编译器上进行了很好的测试。可能会有一个构建系统,它会在每次修改(例如每次签到)时编译test_all_asserts.cpp单元测试)等文件。

你得到的是具有静态断言定义的头文件,以及nott hat test_all_asserts.cpp文件。