我如何测试静态断言确实断言“假”?

时间:2014-11-07 15:11:43

标签: c++ unit-testing static-assert

假设我有一个自定义静态断言实现(因为我需要定位一个内置static_assert的编译器)。我想制作一个检查

的测试
MY_STATIC_ASSERT(false);

确实断言。如果我只是编写这样的代码 - 它将无法编译(因此不会运行)。我宁愿让一些代码在上面的代码失败时编译好,并且在上面的代码编译时无法编译。

这可能吗?我可以进行编译时(或至少是运行时)检查我的静态断言确实断言" false"?

1 个答案:

答案 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

或者其他什么。但它必须完全在一个单独的程序中。