-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

strtr wrote:
> == Quote from div0 (d...@users.sourceforge.net)'s article
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>> strtr wrote:
>>> Or more to the point:
>>>
>>> Can (Class) template mixin functions be devirtualized by the compiler or do 
>>> I (as
>>> optimization) need to manually copy paste the boiler plate code?
>> You can just wrap the mixin in a final block:
>> import std.stdio;
>> template bar(T) {
>>      void test(T t) {
>>              writefln("t: %s", t);
>>      }
>> }
>> class foo {
>>      final {
>>              mixin bar!(int);
>>      }
>> }
>> int main(){
>>      scope f = new foo;
>>      f.test(3);
>>      return 0;
>> }
> 
> Is that different from making all functions within the template final?
> 

Well it delegates the choice of virtual versus non virtual to the class
using the mixin. No idea if that's a good idea or a bad one; I guess
you'd have to think very carefully about what your mixin is trying to
achieve.

I just tried marking a function in the template final
and that seems to work as well, so you could have a mix of virtual and
non virtual in a template, but that feels like a hackish design.

So you can it appears do this: (though that's dmd 2.028)

template bar(T) {
   final:
        void test(T t) {
                writefln("t: %s", t);
        }
        void test2() {
        }
}

class foo {
        mixin bar!(int);
}

int main(){
        foo f = new foo;
        f.test(3);
        f.test2();
        return 0;
}

- --
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iD8DBQFL9v4HT9LetA9XoXwRAgIvAKC8zwQP1EeaU/XkRijfm7m00nXqUQCdEdsN
CV/vi6l5JGnqH5M2WXU6gjU=
=0n7A
-----END PGP SIGNATURE-----

Reply via email to