什么时候应该将noexcept属性添加到函数中?即编译器什么时候不能告诉函数抛出?应该对所有内容都进行标记,还是有办法告知?
我不喜欢过早的优化,也不喜欢过早的归因。我不知道有什么方法可以像优化时分析性能一样“分析”对noexcept的需求。
在评估必要的地方时,请评论最常用的编译器,例如MSVC,GCC等

最佳答案

C++ Core Guidelines建议基本上在代码不会抛出的任何地方使用它。这对于库来说最重要,因为代码检查器会使用您调用的函数来查看它是否为noexcept,否则会收到一连串的警告。
就是说,最重要的建议是使swapmove和析构函数noexcept
C++核心准则还建议将默认构造函数noexcept设置为通常不错的代码,但是许多模式(例如pImpl idiom)通常在其默认构造函数中分配内存。因此,我通常在默认构造函数(或仅采用默认参数的构造函数)上使用noexcept,但是如果我知道它可以抛出,我会明确指出将其标记为nothrow(false)

关于c++ - 什么时候应该显式地赋予noexcept属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63727975/

10-11 22:23
查看更多