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 < [email protected]> 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 > [email protected] > https://lists.swift.org/mailman/listinfo/swift-users > >
_______________________________________________ swift-users mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-users
