The explicit capture list is only necessary in C++ because memory ownership and lifetimes are managed by the programmer in C++.  Compare that to a garbage-collected language like Scheme or C#:  when the implementation can figure out where memory needs to be freed and ensures you can&#x27;t use-after-free, it frees the programmer from thinking about ownership (but not necessarily lifetimes:  you can still wind up with memory leaks in GC&#x27;d languages if you&#x27;re not careful to let go of references you no longer need).  As mentioned elsewhere in this thread, Rust also offers the same level of explicit control without capture lists (though I&#x27;m on the fence about which way I prefer).<p>My point is that in languages with automatic memory management, explicit capture lists don&#x27;t make much sense because the programmer is not tasked with managing memory and can safely capture references all the time.  There&#x27;s no need to ask oneself, &quot;Do I own this pointed-to memory?  Do I need to worry about it being freed before this closure?  Should I make a copy?&quot;, etc.  This is because, in a sense, the garbage collector itself owns the memory, but checks to make sure nothing else can use it anymore before it frees it.