以下 C++ 代码打印11.1然后崩溃。lambda 函数似乎在构造函数内被正确调用,但后来,相同的函数不再起作用!为什么会发生这种情况?lambda 的寿命有限制吗?
#include <functional>
#include <iostream>
class LambdaStore
{
public:
LambdaStore(const std::function<void(float)>& _fn)
: fn(_fn)
{
fn(11.1f); // works
}
void ExecuteStoredLambda()
{
fn(99.9f); // crashes
}
private:
const std::function<void(float)>& fn;
};
int main()
{
LambdaStore lambdaStore([](float a) { std::cout << a << '\n'; });
lambdaStore.ExecuteStoredLambda();
}
Run Code Online (Sandbox Code Playgroud)