noexcept
关键字可以适当地应用于许多函数签名,但我不确定什么时候应该考虑在实践中使用它。根据我到目前为止读到的内容,最后一刻添加的noexcept
似乎解决了move构造函数抛出时出现的一些重要问题。然而,对于一些实际问题,我仍然无法提供令人满意的答案,这些问题让我首先了解了noexcept
。
noexcept
的函数声明在所有这些情况?
不得不考虑是否需要在每一个函数声明之后附加noexcept
将大大降低程序员的工作效率(坦率地说,这将是一件令人头疼的事情)。在哪些情况下,我应该更加小心地使用noexcept
,在哪些情况下,我可以避免使用隐含的noexcept(false)
?
noexcept
后,我什么时候可以实际地期望观察到性能的改善?特别地,给出一个c++编译器在添加noexcept
后能够生成更好的机器代码的代码示例。
就我个人而言,我关心noexcept
,因为它为编译器提供了更多的自由,可以安全地应用某些类型的优化。现代编译器以这种方式利用noexcept
吗?如果没有,我能期待他们中的一些人在不久的将来这样做吗?