Looks like it's a bug.
How to report this bug ?
It is not possible to use auto because in real code the functions
are extern(C).
A workaround is: typeof(&min) fprt = &min;
Yes I already found this workaround, but it is really really ugly
this way.
private ref int __hidden_fn_1002(ref int lhs,ref int rhs);
typeof(&__hidden_fn_1002) fprt;
Is there a way to make this much shorter?
Something like this ?
typeof(& (ref int __hidden_fn_1002(ref int lhs,ref int rhs)))
fprt;
On Wednesday, 19 February 2014 at 16:47:08 UTC, Meta wrote:
On Wednesday, 19 February 2014 at 16:20:39 UTC, Remo wrote:
Hi,
are there any news about this problem ?
This code does compile.
[code]
ref int min(ref int lhs,ref int rhs) {
return lhs > rhs ? rhs : lhs;
}
auto fptr = &min;
pragma(msg,typeof(fptr).stringof); //int function(ref int
lhs, ref int rhs) ref
[/code]
But how to manually specify type of fptr?
This does not compiles
[code]
int function(ref int lhs, ref int rhs) ref fptr3 = &min;
//Error: no identifier for declarator int function(ref int
lhs, ref int rhs)
[/code]
this one too.
[code]
ref int function(ref int lhs, ref int rhs) fptr3 = &min;
//Error: only parameters or foreach declarations can be ref
[/code]
Right now I am using dmd.2.065.0-rc1.
Looks like it's a bug. A workaround is:
typeof(&min) fprt = &min;
Or just use auto like in your example above.