Hello Swift Community!

I know that I’ve seen this mentioned before, but what with Enhanced 
Existentials being brought up, I think this is worth mentioning now.  What is 
the plan regarding letting existentials conform to their protocols?  Currently, 
in Swift 3, it is impossible to write code like this:
protocol Updatable
        { func update() }

struct UpdatePool<T: Updatable>
        { /* ... */ }

let heterogenousPool = UpdatePool<Updatable>()
Error on the last line:  “Using ‘Updatable’ as a concrete type conforming to 
protocol ‘Updatable’ is not supported.”


Although my most common use case of this behavior has actually been solved 
(using ‘AnyObject’ as a concrete type conforming to ‘AnyObject’), I wonder why 
this can’t be extended to any protocol existential (a field which is about to 
explode, if we succeed in Enhancing them).

What do you guys think?

—Braeden Hintze
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to