On 15.02.19 15:20, Bastiaan Veelo wrote:
Exploiting this, it is possible to explicitly convert a function pointer into a delegate [2]:
```
Ret delegate(Args args) fun_to_dlg(Ret, Args...)(Ret function(Args args) fun)
{
     Ret delegate(Args) dlg;
     dlg.funcptr = fun;
     return dlg;
}
```
[...]
This may be preferable to the overload, depending on the number of calls like this. But since this is allowed and working, why can't it be done automatically? Or, when implicit conversion is dangerous, why doesn't a cast exist to the effect of my template? Have I overlooked an easier way of doing this?

Your fun_to_dlg fails when the function has parameters.

As far as I see, it would be possible make the conversion would work by changing how a delegate's context is passed [1]. But I didn't pursue that idea further, and no one else picked it up either.

[1] https://forum.dlang.org/post/ofc0lj$2u4h$1...@digitalmars.com

Reply via email to