This code:
import std.stdio;
class A {
void func() { writeln("A"); }
}
class B : A {
override void func() { writeln("B"); }
}
void main() {
A a = new A;
B b = new B;
auto dg = &a.func;
dg();
dg.ptr = cast(void*)b;
dg();
}
outputs:
A
A
but expected:
A
B