Member function pointers

Adam D. Ruppe destructionator at gmail.com
Fri Jun 7 16:42:38 PDT 2013


On Friday, 7 June 2013 at 23:22:03 UTC, Manu wrote:
> Currently, to get the instance or function pointers from a 
> delegate, you need to do something like:

delegates have two members, ptr and funcptr:
http://dlang.org/function.html

As a fun fact, if you modify druntime's allocator to be malloc(), 
you can use free(delegate.ptr) to manually manage closures, 
though this takes a lot of care to know if it actually should be 
freed or not.

Anyway, the ptr member there is always void*, however, so at 
least one cast is required to actually use it. Perhaps the 
language could be extended to make this strongly typed, but then 
you'd have to change the whole visible type as assigning say, a 
closure to a delegate variable would need to be a different type 
than a class member; I guess this is what you're talking about 
though.

idk, I've kinda wanted pointer to members before but I also think 
D's delegates being so versatile and interchangeable is totally 
boss.

> I don't know a syntax to describe the type of a closure, so 
> when a delegate is typed with a closure instead of a 
> struct/class,
> what is 'C' in the struct template above?

That's a tricky one, perhaps it could be a tuple of the captured 
variables' type.


More information about the Digitalmars-d mailing list