#include <iostream>
struct A {
A() { throw "cake"; }
};
struct B : A {
B() try : A() {
// initialize B some more
} catch(char const* reason) {
::std::cout << "Could not initialize B: " << reason << "\n";
throw;
}
};
int main() {
B b;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgewogICAgQSgpIHsgdGhyb3cgImNha2UiOyB9Cn07CgpzdHJ1Y3QgQiA6IEEgewogICAgQigpIHRyeSA6IEEoKSB7CiAgICAgICAgLy8gaW5pdGlhbGl6ZSBCIHNvbWUgbW9yZQogICAgfSBjYXRjaChjaGFyIGNvbnN0KiByZWFzb24pIHsKICAgICAgICA6OnN0ZDo6Y291dCA8PCAiQ291bGQgbm90IGluaXRpYWxpemUgQjogIiA8PCByZWFzb24gPDwgIlxuIjsKICAgICAgICB0aHJvdzsKICAgIH0KfTsKCmludCBtYWluKCkgewoJQiBiOwp9