template <typename Numeric>
struct UnsignedOrFloatForSize
This is used for UnsignedAbs, where we need to support floating-point
template instantiations even though we don't actually support the operations.
However, there is no corresponding implementation of e.g. SafeUnsignedAbs,
so the float versions will not compile.