Почему noexcept не используется в асинхронных библиотеках (таких как Asio и Beast)

Асинхронные функции часто не используют исключения.

Даже при синхронных вызовах Asio и Boost-Beast имеют перегрузки, которые принимают выходной аргумент типа system_error& вместо того, чтобы бросать.

Асинхронные операции не могут генерировать исключения, потому что операция не завершается в кадре стека вызывающего кода¹.

Есть ли техническая причина, почему они не заявлены noexcept?

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

¹ технически они могут генерировать исключения, например, при проверке предварительных условий или неверных аргументов

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …