Just to clarify: I only wrote Array<T: Equatable> as a short/sloppy way of saying Array<T> where T (the element type, Element) conforms to Equatable.I think the syntax would probably be closer to one of the two alternatives I gave in the original post. The reasons for that can perhaps be seen by looking at this:// Here's is how it's currently possible (in Swift 2) to extend Array<T> where T (the element type, Element) conforms to Equatable. extension Array where T: Equatable { func countElementsEqualTo(value: Element) -> Int { // This method is only available for arrays where the element type (T / Element) conforms to Equatable. return self.reduce(0) { $0.1 == value ? $0.0 + 1 : $0.0 } } } let a1: [Int] = [2, 8, 2, 2, 7, 3, 2, 6] let a2: [Any] = [one, 2, 3.0, UInt8(4)] print(a1.countElementsEqualTo(2)) // 4 // print(a2.countElementsEqualTo(2)) // Error (as expected, since Any doesn't conform to Equatable)So, since the above is how the syntax is for extending Array<T>'s with constrai