Всем доброго времени суток.
Написал свой класс умного указателя. В нём есть приватный метод clear(), в котором использую std::set и std::list как тип локальных переменных. Их значения не выходят за пределы этого метода, а служат просто для сбора данных.
Собственно при работе с этой динамической памятью могут быть выкинуты исключения, которые я в самом clear() не ловлю. Но мне нужно вызвать clear() из деструктора класса.
Пока что внутри деструктора Обернул вызов clear() в try, и при catch пишу инфу в статическое свойство s_state — структура с полем std::exception_ptr.
Это решение мне не очень нравится, ведь надо думать на каком моменте проверять этот статик s_state и как на это реагировать. А при разрушении контейнера с моими указателями он может перезатераться...
Посоветуйте как лучше сделать? Не кидать же исключения из деструктора?
Кста: нужен-ли язык, где Деструктор может вернуть значение?
Доп инфа: в некоторых случаях clear() удаляет сам target object без локальных list set, в других вызывает у таргета unset(), но сперва типо убирает своего хоста у target.