Problem with immutables and Template typeof(this)
AuoroP via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Dec 28 14:07:18 PST 2014
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
More information about the Digitalmars-d-learn
mailing list