> Almost all the operators here seem to be needlessly templated.

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`.

By contrast enforcing `is(T == uint)` guarantees that you really do receive a `uint`.  That's important here because the correct code varies depending on the word size.