Enumap.opOpAssign

Perform an in-place operation.

struct Enumap(K, V)
opOpAssign
(
string op
)
(
inout typeof(this) other
)
if (
is(typeof(this.opBinary!op(other)) : typeof(this))
)
if (
EnumMembers!K == aliasSeqOf!(EnumMembers!K.length.iota)
)

Examples

auto  base  = enumap(Element.water, 4, Element.air , 3);
const bonus = enumap(Element.water, 5, Element.fire, 2);

base += bonus;

assert(base.water == 4 + 5);
assert(base.air   == 3 + 0);
assert(base.fire  == 0 + 2);
assert(base.earth == 0 + 0);

base -= bonus; // cancel out the previous addition

assert(base.water == 4);
assert(base.air   == 3);
assert(base.fire  == 0);
assert(base.earth == 0);

base *= bonus;
assert(base.water == 4 * 5);
assert(base.air   == 3 * 0);
assert(base.fire  == 0 * 2);
assert(base.earth == 0 * 0);

Meta