The symbols that are introduced by mixin template never override/conflict with the formally defined symbols. It's a designed behavior.
Kenji Hara 2013/9/23 growler <[email protected]> > This compiles and runs but I think it is a bug. > --- > import std.stdio; > mixin template TestMixin(T) { > int testMixin; > } > struct Test { > int testMixin; > mixin TestMixin!Test; > } > void main() { > Test t; > t.testMixin = 10; > writefln("%s", t); > } > --- > $ ./hack > Test(10, 0) > > I can also change the struct to be: > --- > struct Test { > string testMixin; > mixin TestMixin!Test; > } > // and the assignment in main() to > t.testMixin = "some string"; > --- > $ ./hack > Test("some string", 0) > > so whether this is a bug or not, I think it is bad. Any thoughts? > > G. >
