func h() -> opaque Comparable { return /* ... */ } var hArray = [h(), h(), h()] hArray.sort() // okay! the Element type is Comparable, and all types are the same
Existentials do not allow such an operation, even with generalized existentials, because two values of the same existential type may have different types at runtime.