程序退出期间的函数局部静态初始化

标准对程序退出期间的函数局部静态初始化有什么看法?
编辑:为了清楚起见,我的意思是代码示例中的情况 - 本地静态b是在构造另一个静态之后a构造的(因此应该b在之前销毁a),但b也在a的析构函数期间构造,所以它应该立即销毁吗?后?优?

我没有设法找到有关此事的任何参考资料。

我想知道这种情况是 UB,还是应该有一些定义的行为?

下面的代码就是一个例子:

struct B{};

void foo()
{
    static B b;
}

struct A
{
    ~A() { foo(); }
};

int main()
{
    static A a;
    
    return 0;
}

如您所见,A 的析构函数会在程序退出时发生(因为它具有静态存储),并且它会尝试构造 B 静态实例。

我对 C++17 更感兴趣,如果它在这个主题上有什么不同的话。

以上是程序退出期间的函数局部静态初始化的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>