writing library | поддержка отказа от исключений
От: Sm0ke Россия ksi
Дата: 09.08.23 11:20
Оценка:
В некоторых проектах разработчики принимают решение полностью отказаться от механизма throw exceptions
путём задания соотв. опции компилятора

С точки зрения разработчика библиотеки
(который не знает в каких проектах возможно использование его либы)
на этот случай приходится позаботиться о выбираемых policy для библиотечных классов

Я хочу спросить вот о чём: Как в крупных проектах обрабатываются ситуации скажем при выделении памяти? (Вопрос 1)
Не будете же писать по старинке на каждый чих if( p == nullptr )
По идее должен быть некий обобщённый механизм, чтобы все аллокации происходили через него
(Можно к примеру писать std::source_location в лог, да по всякому)

Мне не приходилось пока участвовать в проектах с откл. исключениями, вот и спрашиваю.

А на счёт некоторой либы уточнение ~ Память может быть не_выделена по одной из двух причин:
* нехватка памяти в компе
* перед вызовом аллокации не была произведена предварительная инициализация

Либа рассчитана и на обработку ошибок с исключениями и без.
С исключениями просто кидаем std::bad_alloc либо e_unready

А вот как лучше сделать, когда выбрано полиси без исключений? (Вопрос 2)
Самое простое это конечно тупо использовать nullptr в обоих случаях, но как-то не айс

upd: Думаю лучше действительно использовать nullptr, плюс добавить static метод was_unready()

Ну понятно, что полиси с исключениями придётся обернуть в препроцессор #ifndef ...
А кстати как корректно узнать, что они отключены у компилятора? (Вопрос 3)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.