当 noexcept 函数尝试在 gcc 或 clang 中调用非 noexcept 函数时启用警告
Enabling warnings when a noexcept function attempts to call non-noexcept function in gcc or clang
当标记为 noexcept
的函数试图调用函数 not 时,GCC 或 Clang 中是否有一个标志会抛出编译时错误(或警告)标记为 noexcept
?
如果不是,那么当您从先前标记为 noexcept
的函数中删除 noexcept
时,您应该如何判断代码的哪些部分受到影响?就没有办法吗?
标记一个函数 noexcept
即使被调用的函数没有被标记也是有意义的。举一个简单的例子,比如平方根,如果你传递一个负数,它可能会抛出异常。在确保只调用正数的函数中使用它时,可以标记它。如果您捕获异常,同样适用。
也就是说,拥有一个标记可疑电话的工具是有意义的。我知道 clang 有一个编译器警告,用于抛出 noexcept 函数(直接)。 (请参阅 https://clang.llvm.org/docs/DiagnosticsReference.html#wexceptions)对于在 constexpr 中工作的自定义断言宏,我已将其抑制,MSVC 也是如此。
对于间接情况,也就是调用非标记函数,我还没有看到编译器警告。我确实知道 clangd 报告了这一点,很可能是因为 clang-tidy。快速检查它的页面让我相信它是以下检查:https://clang.llvm.org/extra/clang-tidy/checks/bugprone-exception-escape.html
我不知道 GCC,因为我用得不够多。
当标记为 noexcept
的函数试图调用函数 not 时,GCC 或 Clang 中是否有一个标志会抛出编译时错误(或警告)标记为 noexcept
?
如果不是,那么当您从先前标记为 noexcept
的函数中删除 noexcept
时,您应该如何判断代码的哪些部分受到影响?就没有办法吗?
标记一个函数 noexcept
即使被调用的函数没有被标记也是有意义的。举一个简单的例子,比如平方根,如果你传递一个负数,它可能会抛出异常。在确保只调用正数的函数中使用它时,可以标记它。如果您捕获异常,同样适用。
也就是说,拥有一个标记可疑电话的工具是有意义的。我知道 clang 有一个编译器警告,用于抛出 noexcept 函数(直接)。 (请参阅 https://clang.llvm.org/docs/DiagnosticsReference.html#wexceptions)对于在 constexpr 中工作的自定义断言宏,我已将其抑制,MSVC 也是如此。
对于间接情况,也就是调用非标记函数,我还没有看到编译器警告。我确实知道 clangd 报告了这一点,很可能是因为 clang-tidy。快速检查它的页面让我相信它是以下检查:https://clang.llvm.org/extra/clang-tidy/checks/bugprone-exception-escape.html
我不知道 GCC,因为我用得不够多。