<分区>
我大量使用 noexcept,不幸的是,如果某些传递依赖最终导致极少数情况(我们不知道),崩溃将非常难以调试 - 因为 noexcept
会导致 std: :terminate
被调用。
有什么方法可以在编译时检测到这些违规行为吗?在下面的例子中 问题很明显,但默认情况下没有编译器捕获它。我意识到这在所有情况下都是不可能的,但肯定应该可以实现更简单的情况
#include <stdexcept>
void baz()
{
throw std::runtime_error("std::terminate awaits");
}
void bar()
{
baz();
}
void foo() noexcept
{
bar();
}
神栓链接:https://godbolt.org/z/Ooet58
是否有我不知道的编译器标志?捕获此问题的静态分析工具怎么样?