So it's obvious the cast operator is needed, because the compiler chooses to "see" `opCast(bool)`, so the cast must be written by hand.

I did some more investigating: The cast works because (afaik), while a `BigInt` contains references, they are references to immutable data. As such, it is possible to implicitly cast an immutable to a mutable. If the struct had a pointer, then the cast simply would not have worked, even with an explicit opCast.

That said, the whole thing smells bad to me: The presence of a user defined opCast should not prevent useage of const-casting. There's a bug entry about it:
http://d.puremagic.com/issues/show_bug.cgi?id=5747

So this is fine for me as a workaround.