当标记为 的函数尝试调用noexcept未标记为 的函数时,GCC 或 Clang 中是否有一个标志会抛出编译时错误(或警告) noexcept?
noexcept如果不是,那么当您从先前标记的 funciton 中删除时,您应该如何判断代码的哪些部分受到影响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,因为我使用得不够多。
| 归档时间: |
|
| 查看次数: |
1045 次 |
| 最近记录: |