> I don't think it's needless. If you just have a function f(uint n) then it will accept not just uint input but anything that's implicitly convertible to uint.

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?

>  That's important here because the correct code varies depending on the word size.

I don't understand. If the parameter is a non-template uint, then where is the problem...?