I thought mixins didn't override?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Aug 9 15:18:11 PDT 2016


On 08/09/2016 03:10 PM, Engine Machine wrote:
 > I try to use a mixin template and redefine some behaviors but D includes
 > both and then I get ambiguity.

It's not always possible to understand without seeing actual code.

 > I was sure I read somewhere that when one
 > uses mixin template it won't include what is already there?
 >
 > mixin template X
 > {
 >    void foo() { }
 > }
 >
 > struct s
 > {
 >    mixin template
 >    void foo() { }
 > }
 >
 > I was pretty sure I read somewhere that D would not include the foo from
 > the template since it already exists.

I've come up with the following code from your description. It compiles 
and prints "from struct" with DMD64 D Compiler v2.071.2-b2:

import std.stdio;

mixin template X() {
     void foo() { writefln("from mixin");}
}

struct s
{
    mixin X;
     void foo() { writefln("from struct"); }
}

void main() {
     auto a = s();
     a.foo();
}

How is your code different?

Ali



More information about the Digitalmars-d-learn mailing list