digitalmars.D - Delegate / functoin pointer flexibility
- Chris Miller (24/24) Mar 29 2006 I'd like this to work:
I'd like this to work:
int main()
{
static class Foo { } // Class derived from Object
void nf(Object o) { } // Nested function (delegate) taking an Object
instead of Foo
void delegate(Foo) dg = &nf; // test.d(10): cannot implicitly convert
expression (&nf) of type void delegate(Object o) to void delegate(Foo)
return 0;
}
where the parameters are at least base class types. This will let my event
library handle derived classes better. e.g. code that knows about the more
derived class won't need to cast the parameter, and code that doesn't can
stick with the base class.
Return covariance could also be added:
int main()
{
static class Foo { } // Class derived from Object
Foo nf() { return new Foo; } // Nested function (delegate) returning
Foo instead of Object
Object delegate() dg = &nf; // test.d(10): cannot implicitly convert
expression (&nf) of type Foo delegate() to Object delegate()
return 0;
}
Mar 29 2006








"Chris Miller" <chris dprogramming.com>