Здравствуйте, Не могу выдумать корректный ник АКА iZverg, Вы писали:
НМВ>Но что-то меня здесь все-таки беспокоит... Может быть, просто я начитался Саттера,
НМВ>который в "те времена" не знал ни одного хорошего использования (good use) функции
НМВ>uncaught_exception()?
std::uncaught_exception тут тоже не будет корректно работать.
Т.к. он выдаст true даже если исключение было выброшено не в этой функции, а было ещё при входе в функцию. Например, если это код выполняется внутри деструктора, который вызван в результате размотки стека, std::uncaught_exception выдаст true, даже если в этой функции не было исключений.
Есть подход запоминать результат std::uncaught_exception вначале функции, а потом стравнивать со значением в конце функции. Но он тоже ни к чему хорошему не приводит.
Тут единственный вариант делать явную переменную и в конце функции её вручную устанавливать в true, что значит, что исключений в функции не было. Тогда деструкторы смогут её проверять.