On Saturday, 15 June 2019 at 15:54:00 UTC, Robert M. Münch wrote:
Why does the follwing code give: Error: cannot implicitly
convert expression & myFunc of type void function(int a) to
void delegate(int)
void myFunc(int a){return;}
void main()
{
void delegate(int) dg;
dg = &myFunc;
}
See: https://run.dlang.io/is/iTYo2L
By design, I think.
"delegate and function objects cannot be mixed. But the standard
function std.functional.toDelegate converts a function to a
delegate."
Your example compiles if the assignment is changed to dg =
toDelegate(&myFunc); (given appropriate imports).
https://tour.dlang.org/tour/en/basics/delegates
https://dlang.org/phobos/std_functional.html#.toDelegate