4 ms·
If the lambda captures some value, and also outlives the current scope, then that captured value has to necessarily be heap allocated.
by porridgeraisin 1y ago
If the lambda captures some value, and also outlives the current scope, then that captured value has to necessarily be heap allocated.
- do_not_redeem 1y agoThat would be a bug, so just... don't do that? If you return a pointer to a local variable that outlives the scope, the pointer would be dangling. Does that mean we should ban pointers? If you close over a pointer to a local variable that outlives the scope, the closure would be dangling. Does that mean we should ban closures?
- noselasd 1y agoNo, (in C++) the lambda can capture the the variable by value, and the lambda itself can be passed around by value. If you capture a variable by reference or pointer that your lambda outlives, your code got a serious bug.
- gf000 1y agoAnd in Rust, it will enforce correct usage via the borrow checker - the outlive case simply will not compile. If you do want it, you have the option to, say, heap allocate.