cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

Строгий noexcept! #347

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +13, -0 Автор идеи: Konstantin Stupnik

Попросить компилятор проверить, что всё, что написано в noexcept! функции/методе является noexcept (уже не обязательно строгим).

Ну и соответственно все вызовы в noexcept! функции/методе, которые не noexcept должны быть в try/catch блоках с обязательным присутствием catch(...).

Не обложенные try/catch вызовы должны генерировать ошибку компиляции.

apolukhin commented 3 years ago

yndx-antoshkka, 31 августа 2018, 13:43 Идея хорошая, но могут возникнуть проблемы: в данный момент стандарт позволяет имплементациям стандартной библиотеки добавлять noexcept в произвольных местах. Таким образом, код с noexcept! может собираться с одной стандартной библиотекой, но не собираться на другой версии стандартной библиотеки. Это неприятный момент, надо что-то придумать в этом месте.

Konstantin Stupnik, 2 сентября 2018, 16:40 yndx-antoshkka,

Ну потребуется уточнение noexcept-ности многих методов стандартной библиотеки... Учитывая, что noexcept это всё же, в том числе, оператор, получается, что необязательность noexcept уже может привести к тому, что код как минимум будет компилироваться по разному для реализаций STL разных компиляторов.