template mixin in class is virtual function?
strtr
strtr at spam.com
Fri May 21 15:16:09 PDT 2010
== Quote from div0 (div0 at users.sourceforge.net)'s article
> strtr wrote:
> > 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;
> }
I've been marking functions final on a per function basis within the templates but
after reading the docs I was afraid the compiler might just ignore the attribute
and make all mixin-template-functions virtual.
"Mixins can add virtual functions to a class"
http://www.digitalmars.com/d/1.0/template-mixin.html
But that sentence was probably meant as an example not the exclusive description :)
Anyway, Thanks!!
Shouldn't be thinking about optimization anyways ;)
More information about the Digitalmars-d-learn
mailing list