> Documentation states clearly what  `~=` does

That's not strong enough of an argument. `a ~= b` already means something: concatenation. You just can't hijack it to give it completly different semantics. If anything, I'd have expected `myFlags ~= otherFlags` to put otherFlags into myFlags. After all, `Flags`, as you have designed it, is a sort container of enum values.