What is lifetime of lambda-derived implicit functors in C++?
The question is simple: what is lifetime of that functor object that is automatically generated for me by the C++ compiler when I write a lambda-expression?
I did a 开发者_如何学JAVAquick search, but couldn't find a satisfactory answer. In particular, if I pass the lambda somewhere, and it gets remembered there, and then I go out of scope, what's going to happen once my lambda is called later and tries to access my stack-allocated, but no longer alive, captured variables? Or does the compiler prevent such situation in some way? Or what?
Depends on how you capture your variables. If you capture them by reference ([&]
) and they go out of scope, the references will be invalid, just like normal references. Capture them by value ([=]
) if you want to make sure they outlife their scope.
精彩评论