非捕获 lambda 能活多久?

How long does a non capturing lambda live?

如果我有一些大致如下所示的 C++ 代码:

void (*fun_ptr)(int);

void Test()
{
    fun_ptr = [](int i) { /* do stuff */ };
}

int main()
{
   Test();
   /* do stuff */

   fun_ptr(0);
   return 0;
}

我能期望那个函数指针永远存在吗?或者它是否像结构一样,它只在 lambda 声明在范围内时才有效?

What is the lifetime of the target of pointer-to-function pointing to a lambda? 中的答案没有完全解决这个问题,链接的答案没有解释为什么作用域 lambda 可以比创建它们的代码的作用域更长。

fun_ptr 没有指向 lambda。

它有效地指向一个 static 函数(在 lambda class 中定义),并且这个函数不需要一个活的 lambda 来工作。