[swift-users] Weird protocol behaviour.

Dave Abrahams dabrahams at apple.com
Thu Dec 22 16:17:23 CST 2016

on Thu Dec 22 2016, Mikhail Seriukov <swift-users-AT-swift.org> wrote:

> Hello community! I' wondering if somebody can explain this to me.
> Please take look at the snippet.
> protocol P {}
> struct X:P {}
> func foo<A:P>(_ x:A) {}
> func bar() {
>     //let x = X() // this compiles
>     let x = X() as P // this does not compile. Why?
>     foo(x)
> }

It's not a bug, exactly.  In Swift we have the bizarre situation that P
(when used as a type) doesn't conform to P (when used as a generic
constraint).  Doug can probably tell us if there's a good reason for
that or if it's just a temporary limitation.  Doug?


More information about the swift-users mailing list