В некоторых проектах разработчики принимают решение полностью отказаться от механизма throw exceptions
путём задания соотв. опции компилятора
С точки зрения разработчика библиотеки
(который не знает в каких проектах возможно использование его либы)
на этот случай приходится позаботиться о выбираемых policy для библиотечных классов
Я хочу спросить вот о чём: Как в крупных проектах обрабатываются ситуации скажем при выделении памяти? (Вопрос 1)
Не будете же писать по старинке на каждый чих if( p == nullptr )
По идее должен быть некий обобщённый механизм, чтобы все аллокации происходили через него
(Можно к примеру писать std::source_location в лог, да по всякому)
Мне не приходилось пока участвовать в проектах с откл. исключениями, вот и спрашиваю.
А на счёт некоторой либы уточнение ~ Память может быть не_выделена по одной из двух причин:
* нехватка памяти в компе
* перед вызовом аллокации не была произведена предварительная инициализация
Либа рассчитана и на обработку ошибок с исключениями и без.
С исключениями просто кидаем std::bad_alloc либо e_unready
А вот как лучше сделать, когда выбрано полиси без исключений? (Вопрос 2)
Самое простое это конечно тупо использовать nullptr в обоих случаях, но как-то не айс
upd: Думаю лучше действительно использовать nullptr, плюс добавить static метод was_unready()
Ну понятно, что полиси с исключениями придётся обернуть в препроцессор #ifndef ...
А кстати как корректно узнать, что они отключены у компилятора? (Вопрос 3)