Если выброшено исключение, оно выбрасывается.Объект, который не удалось уничтожить, явно не должным образом уничтожен, и ни один из них не остается в массиве.
Если вы используете вектор, проблема та же, но не в вашейкод.: -)
Итак, бросать деструкторы - это просто плохая идея (tm).
Как показывает @Martin ниже, брошенный объект формально не существует, как толькомы входим в деструктор.У других тоже может быть восстановлена память.
Однако в ней, очевидно, содержались некоторые сложные вещи, которые не были должным образом очищены от промывки.Если этот объект и другие, следующие за ним в массиве, содержали некоторые блокировки мьютексов, открытые файлы, кэши баз данных или shared_ptrs, и ни у одного из них не было запущено деструкторов , мы, вероятно, столкнулись с большими проблемами.
Вызов std :: terminate в этот момент, чтобы избавить программу от страданий, выглядит как то, чего вы бы хотели!