Просто чтобы прояснить, этот пример взят непосредственно из стандарта, я его не придумал.

ил сделать тест с вычисленным gotos и локальной статикой

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? Спасибо за любое объяснение.

Ответы на вопрос(1)

Ваш ответ на вопрос