Спецификатор времени компиляции noexcept

96
29 ноября 2021, 01:20
  1. Ясно, что данная спецификация исключений уменьшает размер итогового файла и ускоряет работу программы, выражает, что в функции не генерируется исключение, иначе программа аварийно завершится. Ясно как и когда использовать...
  2. Ясно, что noexcept(expression) вернет true если выражение помечено как noexcept и false _ в обратном случаи...

А для чего нужны спецификации исключения noexcept(true) и noexcept(false), как и когда они используются?..

Answer 1

В зависимотсти от того, где находится noexcept( ... ), он может имеет два разных назначения. Одно вы назвали (проверка выражения на noexcept-ность), а вот второе:

void func() noexcept(условие) {...}

Здесь, func будет являться noexcept только если условие истинно.

noexcept(true) эквивалентен noexcept, поэтому редко используется.

noexcept(false) обычно эквивалентен отсутствию noexcept, с одним исключением:

Если функция является noexcept по умолчанию (например, любой деструктор), то noexcept(false) позволяет сделать ее не noexcept.

Еще, иногда можно увидеть вот такую запись:

void func() noexcept(noexcept(выражение)) {...}

Здесь функция станет noexcept, только если указанное выражение является noexcept.

Answer 2

Функции:

 void foo() noexcept(true); 
 void foo() noexcept(false);

— являются функции с разными типами (не могут формировать перегруженный набор). Это позволяет, например, интерфейсу приложения требовать callback_и, которые (не) выбрасывают исключений

READ ALSO
Диалог vuetify vue js и jquery

Диалог vuetify vue js и jquery

Я пытаюсь сделать диалог vuetify(библиотека vue js) растягиваемым с помощью resize jqueryЯ столкнулся с рядом проблем: 1) jquery расширяет диалог по всем...

121
random Points In Polygon С#?(Unity)

random Points In Polygon С#?(Unity)

Я знаю о последовательности ХэлтонаНо пока я не могу найти формулы, по которым генерируются точки

133
Как отобразить данные из List<> в xaml?

Как отобразить данные из List<> в xaml?

Как я могу вывести данные из List<> в xaml файле?

161