Re[3]: Обработка ошибок в деструкторе своего умного указател
От: andyp  
Дата: 23.12.22 14:20
Оценка:
Здравствуйте, Sm0ke, Вы писали:


S>Сам clear() напрямую ничего не кидает. Но в нём set и list могут бросить.


Ну да, это и имел в виду. Вместо try-catch надо сделать scope guard, который в конструкторе запомнит std::uncaught_exceptions() перед вызовом clear, а после, в своем деструкторе, почистит что надо, если счетчик std::uncaught_exceptions() увеличился.

Пример такой штуки есть в https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4152.pdf
Отредактировано 23.12.2022 14:39 andyp . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.