welche Exception wirft man, wenn man in einem eigenen Allocator oder Speichermanager keinen Speicher mehr findet ? std::bad_alloc scheint ja angemessen. Aber hier kann man keine zusätzlichen Informationen unterbringen, etwa wo und warum das Problem auftrat oder wieviel Speicher angefordert wurde (std::bad_alloc hat keinen Konstruktor für Strings).
Eine eigene Ableitung von bad_alloc könnte ja helfen. In verschieden Büchern steht, dass bad_alloc/bad_cast/bad_exception Ausnahmen für "language support" sind. Sollte man diese (oder Ableitungen davon) nicht selbst werfen ?
Also ich kann dir jetzt nicht sagen wie das speziell bei diesen Exceptions ist, aber generell ist es schon der übliche Weg seine eigenen Exceptions von geeigenten Basisexceptions abzuleiten um dann seine eigenen mit mehr Informationen zu werfen.