xxxxxxxxxx
module method_ref;
class A {
void fun() {}
}
void main() {
/* This works correctly and can sometimes be very useful */
A a = new A;
void function() fn1 = &A.fun;
void delegate() dg1;
dg1.ptr = cast(void*)a;
dg1.funcptr = fn1;
dg1();
}
class B {
/+ static /* works if static */ +/ void dofun() {
/* Error: this for fun needs to be type A not type method_ref.B */
A a = new A;
void function() fn2 = &A.fun;
void delegate() dg2;
dg2.ptr = cast(void*)a;
dg2.funcptr = fn2;
dg2();
}
}