I think this should be a constraint.

I know, we'll lose the nice error message. But with the constraint on you add the ability to overload.