How does Swift choose between 2 functions that are exactly the same but only different generic constraints?

You can use @​_disfavoredOverload to demote the first overload.