declaration-statement: block-declaration
void f() {
// ...
goto lx; // ill-formed: jump into scope of a
// ...
ly:
X a = 1;
// ...
lx:
goto ly; // OK, jump implies destructor call for a followed by
// construction again immediately following label ly
} — end example
int foo(int i) {
static int s = foo(2*i); // recursive call - undefined
return i+1;
} — end example