Open Neargye opened 3 years ago
yndx-antoshkka 1 апреля 2019, 13:02 В таком виде функционал получается достаточно узкоприменимым. Более общее решение - метаклассы, через которые можно добиться аналогичного:
// Псевдокод
$class $try_catch {
for(auto& m: this->functions()) {
if (!m.is_noexcept()) {
// add try{ } catch()
}
}
}
Перенос предложения: голоса +0, -8 Автор идеи: James
Предлагаю рассмотреть специальный метод класса например @имя_класса.
В этом методе нужно писать try {/**/}catch(...){}, и если в классе он объявлен и определен все функции у которых нет спецификатор времени компиляции noexcept, обернуть этим блоком try,catch. Т.е. задать некий шаблон, и по нему обернуть все.
По семантике будет похож на деструктор: т.е. его как можно объявлять явно так и не объявлять вовсе.