Этот код приводит к неопределенному поведению:
void some_func() {
goto undefined;
{
T x = T();
undefined:
}
}
Конструктор не вызывается.
А как насчет этого кода? Будет ли называться деструктор x? Я думаю, что будет, но я хочу быть уверен. :)
void some_func() {
{
T x = T();
goto out;
}
out:
}