On Friday, 15 February 2019 at 17:28:45 UTC, H. S. Teoh wrote:
On Fri, Feb 15, 2019 at 05:40:39PM +0100, ag0aep6g via
Digitalmars-d-learn wrote:
Your fun_to_dlg fails when the function has parameters.
Yes. Delegates are basically syntactic sugar for a function
pointer with an implicit first parameter. I.e., a delegate like:
int delegate(string) dg;
is under the hood implemented as the equivalent of:
struct _delegate {
int function(T* context, string) funcptr;
T* context;
int opCall(string s) { return funcptr(context, s); }
}
where T is an appropriate context type, whether an aggregate
(struct / class) or an anonymous struct that closes over
whatever variables the delegate accesses in its containing
scope.
For this reason, casting a function pointer to a delegate will
not work properly, because the first arguments and number of
parameters would not match.
T
I love this forum!