Новый "Специальный метод класса"

James
James

Предлагаю рассмотреть специальный метод класса например @имя_класса.

В этом методе нужно писать try {/**/}catch(...){},  и если в классе он объявлен и определен все функции у которых нет спецификатор времени компиляции noexcept, обернуть этим блоком try,catch.
Т.е. задать некий шаблон, и по нему обернуть все.

По семантике будет похож на  деструктор: т.е. его как можно объявлять явно так и не объявлять вовсе.

-6
рейтинг
1 комментарий
yndx-antoshkka

В таком виде функционал получается достаточно узкоприменимым. Более общее решение - метаклассы, через которые можно добиться аналогичного:

// Псевдокод
$class $try_catch {
    for(auto& m: this->functions()) {
        if (!m.is_noexcept()) {
            // add try{  } catch()
        }
    }
}

yndx-antoshkka
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения