我决定用计算得到的和局部静力学进行测试
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(); }
Run Code Online (Sandbox Code Playgroud)
我想看看输出是否是"init init!".但令我惊讶的是,我没有得到那个输出,而是GCC优雅地处理它,在运行时输出:
init terminated by recursive_init_error: exception
Run Code Online (Sandbox Code Playgroud)
那个例外是什么?这是标准的例外吗?C++ 03还是C++ 0x?谢谢你的任何解释.