[swift-users] Using 'SomeProtocol' as a concrete type conforming to protocol 'SomeProtocol' is not supported
Nevin Brackett-Rozinsky
nevin.brackettrozinsky at gmail.com
Wed Dec 28 18:05:19 CST 2016
It will work if you change the enum declaration to:
enum ElementNode<T>
In other words, let the enum hold arbitrary unconstrained associated types,
and then make your APIs utilize instances of the enum with the associated
type constrained to a protocol.
The specific example you provide is essentially equivalent to:
var childElements = [Element?]()
Nevin
On Wed, Dec 28, 2016 at 6:41 PM, Brandon Knope via swift-users <
swift-users at swift.org> wrote:
> I don’t understand why this is a problem
>
> protocol Element {
>
>
> }
>
> enum ElementNode<T: Element> {
> case element(T)
> case empty
> }
>
> var childElements = [ElementNode<Element>]()
>
> I need to represent an array of my nodes that could be multiple kinds of
> elements
>
> Is there a workaround?
>
> Brandon
>
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20161228/5f16286a/attachment.html>
More information about the swift-users
mailing list