Контейнеры C++ STL непригодны для использования без исключений, что мы можем с этим сделать?

Предполагаемый идеал C++ - "то, что вы используете, вы платите за это". Однако это может быть довольно изнурительно из-за исключений и их повсеместного использования в STL.

Прежде чем кто-нибудь скажет «просто включите исключения», жизнь не так щедра на среды программирования, в которых мы должны жить. Я занимаюсь программированием ядра, где среда выполнения не предоставляет достаточно времени выполнения C++ для раскручивания стека и т. д.

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

Многие библиотеки C ADT, с которыми я сталкивался, заранее решают эту проблему, возвращая код ошибки или используя ошибку в качестве выходного параметра.

Каков "лучший" способ C++ решения этой проблемы?

Для уточнения

Я не хочу использовать стандартную библиотеку, я не могу. Я не спрашиваю «как мне сделать то, что невозможно сделать». Я спрашиваю: "с чистого листа, какдолжна быть построена библиотека контейнеров."

15
задан user1290696 25 March 2012 в 04:40
поделиться