Здравствуйте, andyp, Вы писали:
A>Здравствуйте, Sm0ke, Вы писали:
S>>Пока что внутри деструктора Обернул вызов clear() в try, и при catch пишу инфу в статическое свойство s_state — структура с полем std::exception_ptr.
S>>Это решение мне не очень нравится, ведь надо думать на каком моменте проверять этот статик s_state и как на это реагировать. А при разрушении контейнера с моими указателями он может перезатераться...
A>Т.е. внутри деструктора в определенной точке тебе надо убедиться, что бросил твой clear а не просто что ты находишься в процессе stack unwinding или нормального завершения? Тогда на std::uncought_exceptions() и всякие scоpe guard посмотри.
Сам clear() напрямую ничего не кидает. Но в нём set и list могут бросить.
Вот код деструктора:
try {
clear();
} catch( ... ) {
s_state.m_target = m_target;
s_state.m_exception = std::current_exception();
}