假设我有一个自定义静态断言实现(因为我需要定位一个内置static_assert
的编译器)。我想制作一个检查
MY_STATIC_ASSERT(false);
确实断言。如果我只是编写这样的代码 - 它将无法编译(因此不会运行)。我宁愿让一些代码在上面的代码失败时编译好,并且在上面的代码编译时无法编译。
这可能吗?我可以进行编译时(或至少是运行时)检查我的静态断言确实断言" false"?
答案 0 :(得分:1)
当然,您可以进行“编译时”检查 - 只要您完全编译其他内容:
// 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
或者其他什么。但它必须完全在一个单独的程序中。