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