当C ++编译器没有内置static_assert
时,有各种方法可以实现静态断言。这是Windows SDK中的一个例子(另一个着名的是来自Boost):< / p>
#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
我从未见过的是这样一条线:
C_ASSERT(true);
紧跟静态断言实现之后。
立即测试至少你的静态断言不断言它不应该在哪里是不合理的吗?
为什么不立即检查它不断言?
答案 0 :(得分:2)
测试是合理的,并且已经由#including
测试给定的静态断言定义文件到一些测试源文件中。就像我们制作一个类一样,我们使用示例程序对它进行测试,静态断言在不同的编译器上进行了很好的测试。可能会有一个构建系统,它会在每次修改(例如每次签到)时编译test_all_asserts.cpp
(单元测试)等文件。
你得到的是具有静态断言定义的头文件,以及nott hat test_all_asserts.cpp
文件。