I have such code as follows
try {
doSomething();
} catch(InterruptException) {
goto rewind_code;
}
if(0) {
rewind_code:
longjmp(savepoint, 1);
}
>
§6.6/2:
On exit from a scope (however accomplished), destructors (12.4) are called for all constructed objects with automatic storage duration...
At least as I'd read it, "however accomplished" should/does include a goto
.
Edit: Okay, based on Johannes's comment, what we care about is §15.1/4:
When the last handler being executed for the exception exits by any means other than throw; the temporary object is destroyed and the implementation may deallocate the memory for the temporary object;
[ ... ]
The destruction occurs immediately after the destruction of the object declared in the exception-declaration in the handler.