> Isn't that the point though? Why would you want to prevent the function from working with something that can be implicitly cast to uint? What's wrong with dividing by a ubyte, or a ushort?

This is an internal function that's designed to work with the "word" size of the underlying data encoding the big integer.  See where it's called from: https://github.com/BioTronic/phobos/blob/862f8a0adae98dd1c976afbf53d037f4336298fa/std/internal/math/biguintcore.d#L617-L618

It's therefore an important safety feature that it allow only _exactly_ the right type to be passed.