构造或析构函数在 function-try-block 的 handler 中访问非静态成员
C++-Undefined-Behavior-68
示例:
class T {
int err;
public:
T() try { .... } catch (...) { log(err); } // Undefined behavior
~T() try { .... } catch (...) { log(err); } // Undefined behavior
};
流程进入 function-try-block 的 handler 时,非静态成员的生命周期已结束,不可再被访问。
依据
ISO/IEC 14882:2003 15.3(10)-undefined
ISO/IEC 14882:2011 15.2(10)-undefined