Re: alias & local function
This one runs fine, ``` import std.stdio; void main() { static int Gfunction(int x){return x;} int Lfunction(int x){return x;} alias gfunction = int function(int); alias lfunction = int delegate(int); gfunction g = & Gfunction; lfunction l = & Lfunction; writeln(g(1)); writeln(l(1)); } ```
Re: alias & local function
On Monday, 10 May 2021 at 01:25:10 UTC, Alain De Vos wrote: This does not: ``` import std.stdio; void main() { int afunction(int x){return x;}; it's not static so -> context -> delegate alias myint = int; myint i=5; alias tfunction = int function(int); tfunction f = & afunction; writeln(f(1)); } ``` It gives compile error : Error: cannot implicitly convert expression of type int delegate(int x) pure nothrow @nogc @safe to int function(int) add static in the second case.
Re: alias & local function
I see. Just like in Java.
Re: alias & local function
I wonder why ?
alias & local function
The following program runs correctly ``` import std.stdio; int afunction(int x){return x;}; void main() { alias myint = int; myint i=5; alias tfunction = int function(int); tfunction f = & afunction; writeln(f(1)); } ``` This does not: ``` import std.stdio; void main() { int afunction(int x){return x;}; alias myint = int; myint i=5; alias tfunction = int function(int); tfunction f = & afunction; writeln(f(1)); } ``` It gives compile error : Error: cannot implicitly convert expression of type int delegate(int x) pure nothrow @nogc @safe to int function(int)