try-catch в constexpr?

126
15 декабря 2020, 19:50

Можно ли использовать обработку исключений в constexpr функциях и методах?

Answer 1

Начиная с C++20 (так же известный как C++2a) в constexpr функции можно включать try-catch блок. Сделано это, как я понимаю, для унификации, чтобы не нужно было писать разные функции для ситуаций вычисления в процессе компиляции или рантайма. Ведь constexpr это ещё не гарантия того, что функция будет вычисляться в момент компиляции, а всего лишь разрешение такой возможности.

При этом использовать явный throw запрещено, т.к. это автоматически блокирует возможность функции вычисляться на этапе компиляции. Т.е. входит в противоречие с самой идеей constexpr.

Соответствующий proposal по разрешению try-catch в constexpr функциях можно найти тут.

READ ALSO
CMake Ошибка при сборке: Нет правила для сборки цели

CMake Ошибка при сборке: Нет правила для сборки цели

Мой проект содержит подпроект spu-apiПри сборке возникает ошибка:

142
xlib (или gtk). C++. Выделить окно

xlib (или gtk). C++. Выделить окно

Мое приложение шарит часть рабочего стола с окном какого-либо приложенияКогда эту шару кто-то просматривает, то на машине, на которой запущено...

146
Вопрос по заданию на С++ по библиотеке STL

Вопрос по заданию на С++ по библиотеке STL

Вот задание: Дан массив из N целых чиселНайти среднее арифметическое элементов массива, кратных числу k

132