Следующий проект от новой книги С++ 11 от Скотта Мейерса (стр. 2, строки 7-21)
Разница между разворачиванием стека вызовов и, возможно, его разворачиванием имеет на удивление большое влияние на формирование кода. В функции noexcept оптимизаторы не нужно держать стек времени выполнения в состоянии разматывания, если исключение распространяются вне функции и не должны гарантировать, чтобы объекты в noexcept функция уничтожается в обратном порядке построения, если исключение оставьте функцию. В результате появляется больше возможностей для оптимизации не только внутри тела функции noexcept, но также и в тех местах, где функция называется. Такая гибкость присутствует только в случае отсутствия функций. Функции с Спецификации исключения "throw()" отсутствуют, как и функции без спецификации исключения.
В отличие от раздела 5.4
Технический отчет о производительности С++ описываются способы" исключения "кода и" таблицы "обработки. В частности, показано, что метод" таблицы" не имеет лишних временных затрат, когда не выбрасывается никаких исключений и имеет только служебные служебные данные.
Мой вопрос в том, что оптимизирует Скотт Мейерс, говоря о том, когда он говорит о развязывании и, возможно, раскручивании? Почему эти оптимизации не применяются для throw()
? Используют ли его комментарии только к методу "кода", указанному в 2006 TR?