unittest
{
immutable float a = 1.1, b = 1.2;
auto c1 = complex(a,b);
auto r1 = c1 + c1; // error, not mutable
}
つまり、 を持つことはできますがComplex!(immutable float)
、そのopBinary
関数を の別のインスタンスに対して使用することはできませんComplex!(immutable float)
。では、なぜ std.complex がそのように実装されているのでしょうか?
これがopBinary
です。を呼び出しますがopOpAssign
、これは では機能しないimmutable
ため、エラーが発生します。
Complex!(CommonType!(T,R)) opBinary(string op, R)(Complex!R z) const
{
alias typeof(return) C;
auto w = C(this.re, this.im);
return w.opOpAssign!(op)(z);
}