opDispatch doesn't play nice with inheritance
Carl Sturtivant
sturtivant at gmail.com
Sun Nov 18 06:09:51 UTC 2018
On Thursday, 15 November 2018 at 19:01:45 UTC, Ali Çehreli wrote:
> On 11/15/2018 09:14 AM, Carl Sturtivant wrote:
>
> > opDispatch is special in that it allows for functions to be
> added to a
> > class or struct when undefined overtly but used elsewhere but
> it seems
> > those functions sadly are final.
> >
> > Can anything useful be done to remedy the situation?
>
> For the compiler to be able to make all opDispatch
> instantiations virtual, it would have to first see all calls
> that generate opDispatch instantiations. (Impossible in the
> presence of separate compilation.)
>
> Only then the compiler would know how large the vtbl of the
> base class should be and what member functions of the derived
> class are overrides of those virtual functions.
I suppose it's such administrative difficulties that led to D
defining anything that might conceivably be overridden to be
virtual, whether or not actually overridden.
More information about the Digitalmars-d-learn
mailing list