Using `MaxType!(T1, T2, T3)` is wrong here. The correct type is `MaxType!(T2, MinType!(T3, T2))`. Or we can use `ClampType`.

OR, we just use `auto`. `min` and `max` need explicit return types, to break the built in "unsigned promotion". Clamp has no such need, since it makes staright calls to `min`/`max`.

This is the case that fails, BTW:
```D
clamp(-1L, -2L, 2UL);
```
"Correct" return type here is `long`, *not* `ulong`.