递归地定义和初始化静态对象
C++-Undefined-Behavior-51
示例:
int foo(int i) {
if (i < 100) {
static int s = foo(2 * i); // Undefined behavior
return s;
}
return i;
}
例中静态局部变量 s 的初始化需要递归调用所属函数,是否会产生多个 s 的实例以及是否能正常结束递归,均是未定义的。
依据
ISO/IEC 14882:2003 6.7(4)-undefined
ISO/IEC 14882:2011 6.7(4)-undefined