#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;
}