On 29.05.2012 21:04, Andrej Mitrovic wrote:
On 5/29/12, Dmitry Olshansky<[email protected]>  wrote:
I'm reiterating prior info on the subject and provide some motivating
examples. For those convinced of necessity of virtual function templates
already - skip to the bottom ;)

I've run into an issue like this, currently I use this sort of workaround:

class Base
{
     abstract void run();

     void runAll(this Child)(Child ch)
     {
         foreach (i; 0 .. 10)  // demo
             ch.templateMethod(i);
     }
}

class Child : Base
{
     override void run()
     {
         runAll(this);
     }

     void templateMethod(T)(T t) { }
}

void main()
{
     auto ch = new Child;
     ch.run();
}

Would this work if say:
      Base ch = new Child;
        ch.run();

Since all this template this parameter stuff is arcane to me :)
In any event it look like doing hand-written thunks. And that's clear indication to me that it needs a better hook in compiler.


All subclasses of Base need to implement 'templateMethod', but it has
to be a templated function. Unfortunately that means it can't be
virtual so I'm using a 'this' template parameter in a base function
that has to be called. Not very pretty!

The bloat is the same, and even some extra call overhead if I'm not mistaken.

--
Dmitry Olshansky

Reply via email to