On Wednesday, 9 March 2016 at 22:05:28 UTC, Ola Fosheim Grøstad
wrote:
On Wednesday, 9 March 2016 at 20:41:35 UTC, bigsandwich wrote:
Right, I used to this sort of thing in C++ prior to C++11. I
think not having an RAII wrapper for lambdas similar to
std::function<> is an oversight for D, especially for people
averse to GC. That little bit of syntactic sugar makes a huge
difference.
std::function<> is a lot more than syntactic sugar, it is a
runtime-heavy construct. From
http://en.cppreference.com/w/cpp/utility/functional/function :
«Class template std::function is a general-purpose polymorphic
function wrapper. Instances of std::function can store, copy,
and invoke any Callable target -- functions, lambda
expressions, bind expressions, or other function objects, as
well as pointers to member functions and pointers to data
members.»
I don't think you want this...
Yes, I do. std::function<> uses type erasure to store a
"function". If its small enough, its stored internally,
otherwise it goes on the heap. It uses RAII to manage the
lifetime of the lambda. D is using the GC for managing the
lifetime. D doesn't have a way of doing this without the GC.