On Thursday, 7 December 2017 at 15:14:48 UTC, Adam D. Ruppe wrote:
On Thursday, 7 December 2017 at 00:45:21 UTC, Mike Franklin
wrote:
// Error: A.f called with argument types () matches both:
A.f() and A.f()
// Yeah, that error message could be better.
//a.f();
(cast(I)a).f(); // prints "void f()"
(cast(J)a).f(); // prints "int f()"
D also allows you to simply write:
a.I.f();
a.J.f();
also works for explicitly calling a base class implementation
btw
This implies that I cannot implement two syntactically identical
methods with different implementations, like if J had void f();
too, I cannot have different implementations for I.f() and J.f().
That would be relevant if they should behave differently e.g. if
they have conflicting contracts.