Говоря с моим коллегой, они сказали, что:
foo() { int *p; { int x = 5; p = &x; } int y = *p; }
создает поведение undefined, поскольку правила жизни и правила области действия не указывать.
Однако:
foo() { int *p; { static int x = 5; p = &x; } int y = *p; }
не undefined! Вы получаете проблемы с косвенным определением.
Использование терминологии не является правильным.
Я знаю, что статика не имеет никакого отношения к определению области.
Верно ли, что второй случай определил поведение?