3.3. goto and Destructors in GNU C++

In C++ programs, you can safely use the goto statement. When you use it to exit a block that contains aggregates requiring destructors, the destructors will run before the goto transfers control.

The compiler still forbids using goto to enter a scope that requires constructors.