#include <iostream>
struct X
{
X(const char *str): str(str)
{
std::cout << "X(" << str << ")" << std::endl;
}
~X()
{
std::cout << "~X(" << str << ")" << std::endl;
}
const char *str;
};
int main()
{
void *ptr_out;
ptr_out = &&out;
std::cout << "Before block" << std::endl;
{
std::cout << "In block" << std::endl;
X x("x");
X y("y");
std::cout << "Leaving block via goto" << std::endl;
goto *ptr_out;
//goto out;
std::cout << "Never executed" << std::endl;
}
out:
std::cout << "Left block" << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFgKewoJWChjb25zdCBjaGFyICpzdHIpOiBzdHIoc3RyKQoJewoJCXN0ZDo6Y291dCA8PCAiWCgiIDw8IHN0ciA8PCAiKSIgPDwgc3RkOjplbmRsOwoJfQoJCgl+WCgpCgl7CgkJc3RkOjpjb3V0IDw8ICJ+WCgiIDw8IHN0ciA8PCAiKSIgPDwgc3RkOjplbmRsOwoJfQoJY29uc3QgY2hhciAqc3RyOwp9OwoKaW50IG1haW4oKQp7CiAgICB2b2lkICpwdHJfb3V0OwogICAgcHRyX291dCA9ICYmb3V0OwoJc3RkOjpjb3V0IDw8ICJCZWZvcmUgYmxvY2siIDw8IHN0ZDo6ZW5kbDsKCXsKCQlzdGQ6OmNvdXQgPDwgIkluIGJsb2NrIiA8PCBzdGQ6OmVuZGw7CgkJWCB4KCJ4Iik7CgkJWCB5KCJ5Iik7CgkJc3RkOjpjb3V0IDw8ICJMZWF2aW5nIGJsb2NrIHZpYSBnb3RvIiA8PCBzdGQ6OmVuZGw7CgkJZ290byAqcHRyX291dDsKICAgICAgICAvL2dvdG8gb3V0OwoJCXN0ZDo6Y291dCA8PCAiTmV2ZXIgZXhlY3V0ZWQiIDw8IHN0ZDo6ZW5kbDsKCX0Kb3V0OgoJc3RkOjpjb3V0IDw8ICJMZWZ0IGJsb2NrIiA8PCBzdGQ6OmVuZGw7CgkKCXJldHVybiAwOwp9