The function foo<A: P>(x: A){} requires a type which conforms to protocol P.
An existential of protocol P does not actually conform to protocol P. It’s always been a limitation in Swift: https://bugs.swift.org/browse/SR-55 If the function’s signature were foo(x: P){}, it would work. Howard’s example swaps the protocol P for a concrete type (P1), which is what makes it work. Cheers, Guillaume Lessard _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users