Спецификатор
noexcept
был добавлен в c ++ 11 в качестве замены для throw()
.Это гарантирует, что функция не сгенерирует .Разница между ним и throw()
заключается в том, что при noexcept
, если функция на самом деле выбрасывает , стек может быть только не получен , что не было в случае с предыдущим (стек всегда становится бесполезным).Это позволяет проводить больше оптимизаций, например, полностью исключая обработку исключений.
Подводя итог, можно сказать, что компилятор принимает решение об исключении обработки исключений, но с noexcept
у него нет никаких причин не делать этого.так что , что было действительно трудно определить в другом случае.