Название: Использование спецификатора noexcept Отправлено: ksk- от Январь 09, 2017, 18:03 Всем привет! Вопрос: Имеет ли смысл объявлять функции как noexcept, если проект собирается без исключений? Если да, то почему?
Название: Re: Использование спецификатора noexcept Отправлено: Пантер от Январь 09, 2017, 20:52 ИМХО, не имеет. Единственное, это могут потребовать виртуальные методы с noexcept, которые ты переопределяешь.
Название: Re: Использование спецификатора noexcept Отправлено: __Heaven__ от Январь 16, 2017, 15:03 Выписка из лекции Полубенцевой М.И.:
Как компилятор использует noexcept Важно! • Спецификация noexcept – это способ для программиста предоставить компилятору информацию о том, что функция не будет генерировать исключения • Получив информацию о том, что функция безопасна, компилятор может использовать дополнительные оптимизации • Например, некоторые контейнеры (vector) поддерживают перемещение элементов только в том случае, когда move конструктор noexcept, а в противном случае вызывают глубокое копирование Специфика noexcept • Спецификатор времени компиляции noexcept значительно уменьшает размер итогового файла и ускоряет работу программы. • => полезно его использовать «по делу»!!! • если функция со спецификатором noexcept все-таки сгенерирует исключение, то будет вызвана std::terminate() => аварийное завершение. Код
Код
|