On Saturday, February 25, 2012 18:11:27 Andrei Alexandrescu wrote: > On 2/25/12 2:44 PM, Walter Bright wrote: > > On 2/25/2012 9:53 AM, deadalnix wrote: > >> And suddenly, the override doesn't override the same thing anymore. > >> Which is > >> unnacceptable. > > > > class A { > > void fun() const { } > > void fun() { } > > } > > > > class B : A { > > override void fun() { } > > } > > > > ---- > > > > dmd -c foo > > foo.d(6): Error: class foo.B use of foo.A.fun() hidden by B is deprecated > > Hm, the issue there is that now both overloads of fun must be overridden.
Except that that's already normally the case. If you had class A { void func(int i) {} void func(float i) {} } class B { override void func(int i) {} } then the float version is not in B's overload set, and you have to add an alias. class b { alias A.func func; override void func(int i) {} } Though I suppose that the difference is that with const, it's giving you an error, and with this, it isn't. Perhaps that's what your concern is. - Jonathan M Davis