A a;
} catch(...) {
}
???
}
Это проблема архитектуры, а не RAII. Ваш "внешний" try-catch должен быть написан там, где вас уже не будет волновать наличие объекта a, а все "внутренние" вызовы должны просто пропускать это исключение наверх. Иногда катит IIFE auto a = []{ try { return A(); } catch(...) { // do smth } }();
Так а в чем проблема здесь? Вы не должны хотеть использовать объект, который не создан
struct A {}; int main() try { A a; //b // c } catch(...) { } И в чем проблема?
Ну разве что может быть проблема если в обработке создания следующих объектов нужен a. try { A a; } catch(...) {} try { B b; } catch(...) { a.call() ; }
Логично что так оно работать не будет
Это кстати насколько я понимаю где-то рядом с уб. Lifetime а не начался (если предположить, что мы как-то решили проблему со скоупом)
Обсуждают сегодня