I have been trying to figure templates out... template ExampleTemplate(T) { struct ExampleTemplate { T value;
// constructor auto this(T value) { this.value = value; return this; } // opAdd typeof(this) opAdd(typeof(this) that) // immutable { typeof(this) result; result.value = this.value + that.value; return result; } } } alias ExampleTemplate!int Example; immutable immutableEx = Example(1); Example ex = Example(1); Example ex2 = immutableEx + ex; I get this error with mutbale opAdd: example.d(27): Error: mutable method example.ExampleTemplate!int.ExampleTemplate.opAdd is not callable using a immutable object I get this error with immutable opAdd -------~-------+-------~-------=-------~-------+-------~------- example.d(18): Error: cannot modify immutable expression result.value example.d(27): Error: template instance example.ExampleTemplate!int error instantiating I get that typeof(this) is immutable ExampleTemplate!int. I can't find any way to cast immutable away because typeof(this) is the only way I know to get the type. Any help would be greatly appreciated! ____________________________________________________________ Can't remember your password? Do you need a strong and secure password? Use Password manager! It stores your passwords & protects your account. Check it out at http://mysecurelogon.com/manager