http://d.puremagic.com/issues/show_bug.cgi?id=3180
Summary: Need delegate covariance and contravariance Product: D Version: unspecified Platform: Other OS/Version: Windows Status: NEW Keywords: spec Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: rayerd....@gmail.com import std.stdio; class A {} class B : A {} class X { A foo() { return new A; } } class Y : X { B foo() { return new B; } } class V { void foo(B){} } void main() { // Class Covariance (supported already) { X x = new X; Y y = new Y; A r = x.foo(); A s = y.foo(); B t = y.foo(); writeln(r); // A writeln(s); // B writeln(t); // B } // Delegate Covariance { A delegate() f = delegate A() { return new A; }; // Of course, OK. writeln(f()); // A //A delegate() g = delegate B() { return new B; }; // Need support the covariance //writeln(g()); // This should be B. } // Delegate Contravariance { V v = new V; void delegate(B) g = &v.foo; // Of course, OK. //void delegate(A) f = &v.foo; // Need suport the contravariance. } } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------