Я решил провести тест с вычисленными переходами и локальной статикой
void g() { std::cout << "init "; }
void f() {
int z = 0;
y: z++;
static int x =
(g(), z == 1 ? ({ goto *&&y; 0; }) : 0);
}
int main() { f(); std::cout << "!"; f(); }
). Я хотел посмотреть, будет ли результат «init init!». Но, к своему удивлению, я не получил этого вывода, но вместо этого GCC обработал его изящно, выводя во время выполнения:
init terminated by recursive_init_error: exception
Что это за исключение? Это стандартное исключение? C ++ 03 или C ++ 0x? Спасибо за любые объяснения.