digitalmars.D - opAssign in mixins
- Max Samukha (48/48) Dec 16 2006 Can anybody tell me if the following should work?
Can anybody tell me if the following should work? template TProp(T) { T _value; T opAssign(T v) { _value = v; return v; } } class Test { mixin TProp!(int) intProp; mixin TProp!(char[]) stringProp; } void main() { auto test = new Test; test.intProp = 1; test.stringProp = "A value"; } The compiler outputs: test.d(12): function test.Test.TProp!(int).opAssign conflicts with test.Test.TProp!(char[]).opAssign at test.d(12) test.d(12): function test.main.TProp!(int).opAssign conflicts with test.main.TProp!(char[]).opAssign at test.d(12) It is semantically equivalent to the working code which creates no conflicts: template TProp(T) { T _value; T set(T v) { _value = v; return v; } } class Test { mixin TProp!(int) intProp; mixin TProp!(char[]) stringProp; } void main() { auto test = new Test; test.intProp.set(1); test.stringProp.set("A value"); }
Dec 16 2006