如果 std::uncaught_exceptions() 的结果大于未捕获异常的计数器(通常在栈展开时)且 scope_fail 处于活动状态,则调用退出函数,然后销毁存储的 EF(如果它是一个函数对象)和任何其他非静态数据成员。
是否在栈展开时调用析构函数可以通过比较 std::uncaught_exceptions() 的结果和 scope_fail 中未捕获异常的计数器来检测。