Hacker News new | ask | show | jobs
by ezy 3378 days ago
I don't think this is correct. I'm not sure there are many people that would argue that C++11 doesn't have lexical closures just because its closures need to take into account the semantics of C++ itself. Anyone who says that, doesn't really understand how C++ is used, frankly.

You said it yourself, if you specify generic close by value, you will get the behavior you want. If you know your closure won't outlive the stuff it closes over, you can capture by ref. If you need some other behavior, you use smart pointers and capture by value or mix and match based on what you're capturing.

Just because C++ doesn't automatically figure it out for you isn't an argument against it having closures, any more than not a having bignum or rational built in means it can't do arithmetic.

1 comments

It's better to call them what they are in C++, lambdas, rather than closures, in my opinion. The flexibility that proper closures provide in functional languages just cannot exist in C++ and mixing the terms freely only confuses the matter.