Almost all the operators here seem to be needlessly templated. Was this a workaround of some sort? Is it still necessary? It doesn't necessarily require clean up in this pull, but if we are going to make a change, we might as well remove it rather than make it more complex.

Why did this require a change, but not, say, `is (Tulong == ulong)` ?