How do I test that static assert does indeed assert for "false"?
假设我有一个自定义的静态断言实现(因为我需要针对没有内置
1 | MY_STATIC_ASSERT(false); |
确实断言。如果我只是编写这样的代码 - 它不会编译(因此不会运行)。我宁愿有一些代码在上面的代码失败时编译得很好,而在上面的代码编译时编译失败。
这可能吗?我可以在编译时(或至少在运行时)检查我的静态断言是否确实为"假"断言?
当然,您可以进行"编译时"检查——只要您完全在编译其他东西:
1 2 3 4 5 6 7 8 9 10 11 12 | // test_my_static_assert.cpp #include"my_static_assert.h" int main() { MY_STATIC_ASSERT(false); } // compile.sh if g++ test_my_static_assert.cpp; then echo"MY_STATIC_ASSERT failed! Compile succeeded!" fi |
什么的。但它必须完全在一个单独的程序中。