valid using ?:, I would think that you'd want to be doing the same check with stuff like if statements anyway. So, it sounds to me like overloading opCast!bool would work just fine.
If you try to do:
some_float ?: 0.0 then it will do nothing as cast(bool)std.math.NaN(0) => trueBut that is just one of many possible examples. The elvis operator as proposed does not match on nullity / invalid state.
