I love lambdas, but a lot of commenters are throwing around the word &quot;closure&quot; here, and c++ lambdas are definitely not closures. You can capture outside variables by value or by reference, but that value can expire before the lambda runs if the reference no longer exists; in which case, you are in trouble. Unlike a true closure (as in lisp or other languages), where the closed-over value stays around.<p>If we talk only about c++ capture lists by value (i.e. [=]), then you could make a case for a more appropriate use of the word &quot;closure&quot; but since many lambdas do more than this, I think the distinction is necessary.<p>However, even in by-value captures, if you are capturing a pointer by value, the issue remains. So, really it is not a good idea to think of lambdas as closures in the functional sense typically used in other languages.