以下来自Scott Meyers的新C++ 11书中的草稿(第2页,第7-21行)
展开调用堆栈和可能展开调用堆栈之间的区别对代码生成产生了惊人的巨大影响.在noexcept功能,优化不需要保持运行栈在unwindable状态,如有异常会向外传播的功能,也不是他们必须确保在noexcept函数对象在施工相反的顺序应该例外离开此功能被破坏.结果是更多的优化机会,不仅在noexcept函数的主体内,而且在调用函数的站点.这种灵活性仅适用于noexcept功能.具有"throw()"异常规范的函数缺少它,没有异常规范的函数也没有.
相比之下,部分5.4的"关于C++的性能技术报告"描述了"代码"和实施异常处理的"表"的方式.特别是,当没有抛出异常并且只有空间开销时,"table"方法被显示没有时间开销.
我的问题是这个 - 斯科特迈尔斯在谈论解散和可能解散的时候谈到了什么优化?为什么这些优化不适用throw()?他的评论是否仅适用于2006 TR中提到的"代码"方法?