Я прочитал неясные вещи, касающиеся спецификатора noexcept и оптимизации компилятора. При указании noexcept
компилятор может оптимизировать:
Первоначальная причина noexpect состояла в том, чтобы позволить библиотекам использовать более быстрые конструкторы перемещения внутри, если вызывающей функции не разрешено генерировать по спецификации.
Далее, большая оптимизация производительности может быть достигнута в контейнерах, таких как вектор STL, когда конструктор перемещения вашего типа и назначение перемещения снабжены комментариями noexcept. Когда утилита STL std :: move_if_noexcept обнаруживает, что ваши ходы не генерируют, она будет использовать эти безопасные ходы, а не копии для некоторых операций (например, изменения размера). Это, в случае контейнеров, хранящих миллионы элементов, обеспечит огромную оптимизацию.
(цитата из с использованием-noexcept)
Кроме того, компилятору не нужно генерировать дополнительный код для разматывания стека, если он знает, что никакие исключения не могут быть выданы из-за спецификатора noexpect.
Я не вижу, как на время компиляции существенно влияют noexcept-speciers. В результате время выполнения может быть намного быстрее, хотя.
Других решений пока нет …