<div dir="ltr">On Wed, May 24, 2017 at 7:21 PM, David Sweeris <span dir="ltr">&lt;<a href="mailto:davesweeris@mac.com" target="_blank">davesweeris@mac.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span><br><div><blockquote type="cite"><div>On May 24, 2017, at 5:11 PM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:</div><br class="m_-5784497114239993718m_-8141685891239421842Apple-interchange-newline"><div><div dir="ltr">On Wed, May 24, 2017 at 3:32 PM, David Sweeris via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">So, I’m working on a type, and would like to make it conform to `ExpressibleByArrayLiteral`. The thing is, I don’t actually care what type `Element` is as long as it conforms to `FixedWidthInteger` and `UnsignedInteger`. I tried writing this:<div><div style="margin:0px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">  </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)">public</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)">init</span><span style="font-variant-ligatures:no-common-ligatures"> &lt;U: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(112,61,170)">FixedWidthInteger</span><span style="font-variant-ligatures:no-common-ligatures"> &amp; </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(112,61,170)">UnsignedInteger</span><span style="font-variant-ligatures:no-common-ligatures">&gt; (arrayLiteral elements: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(79,129,135)">U</span><span style="font-variant-ligatures:no-common-ligatures">...) { </span>… }</div></div><div><span style="font-variant-ligatures:no-common-ligatures">But Xcode says my type doesn’t conform to `ExpressibleByArrayLiteral` unless I add an init that takes a concrete type:</span></div><div><span style="font-variant-ligatures:no-common-ligatures"><div style="margin:0px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">  </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)">public</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(186,45,162)">init</span><span style="font-variant-ligatures:no-common-ligatures">(arrayLiteral elements: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(112,61,170)">UInt</span><span style="font-variant-ligatures:no-common-ligatures">...) {</span><font face="Menlo"> </font><font face="Menlo">…</font> }</div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures">Does anyone else think the generic init should to be able to satisfy `ExpressibleByArrayLiteral` (especially since `UInt` meets the conformance requirements)?</span></div></span></div></div></blockquote><div><br></div><div>Your type needs to be generic.</div></div></div></div></div></blockquote><br></div></span><div>It already is… I just don’t want to restrict it to being initialized from array literals containing that same generic type.</div></div></blockquote><div><br></div><div>Not sure of your particular use case, but it sounds like you&#39;d want to write a type-erased AnyFixedWidthUnsignedInteger wrapper.</div><div><br></div><div><br></div></div></div></div>