Предполагаемый идеал С++ - это "то, что вы используете, вы платите". Однако это может быть довольно изнурительным из-за исключений и их повселокального использования в STL.
Прежде чем кто-нибудь скажет, что "просто включайте исключения", жизнь не настолько щедра с условиями программирования, в которых мы должны жить. Mine - это программирование ядра, где среда исполнения не обеспечивает достаточную рабочую среду С++ для разворачивания стека и т.д.
Контейнеры STL будут вызывать исключения при отказе выделения, если они не могут перераспределить хранилище для своих базовых хранилищ. Когда исключения не включены в среде, программа будет катастрофовать довольно загадочно: я видел, что реализация была отменена или просто предположила, что распределение работает, даже если это не так.
Многие библиотеки AD AD, с которыми я столкнулся, справляются с этой проблемой заранее, возвращая код ошибки или имея ошибку в качестве выходного параметра.
Что такое "лучший" С++ способ решения этой проблемы?
Чтобы уточнить
Я не хочу использовать стандартную библиотеку, я не могу. Я не спрашиваю: "Как я делаю то, что не может быть сделано". Я спрашиваю: "С учетом чистого листа, как должна строиться библиотека контейнеров".