<div dir="ltr">Hi everyone,<div><br></div><div>I&#39;m puzzled by the following behaviour in Swift 2.2. This code compiles and behaves as expected:</div><div><br></div><div><div><font face="monospace, monospace">  protocol Executable {}</font></div><div><font face="monospace, monospace">  class Box&lt;T: Any&gt; {}</font></div><div><font face="monospace, monospace">  let box = Box&lt;Executable&gt;()</font></div></div><div><br></div><div>If I now replace the type constraint on <font face="monospace, monospace">T</font> with <font face="monospace, monospace">Executable</font>, I&#39;m getting a compiler error:</div><div><br></div><div><div><font face="monospace, monospace">  protocol Executable {}</font></div><div><font face="monospace, monospace">  class Box&lt;T: <b>Executable</b>&gt; {}</font></div><div><font face="monospace, monospace">  let box = Box&lt;Executable&gt;()</font></div></div><div><font face="monospace, monospace"><br></font></div><div>From a type-theoretic perspective, I can&#39;t see why instantiating class <font face="monospace, monospace">Box</font> with type <font face="monospace, monospace">Executable</font> should be prohibited. Also the corresponding error message isn&#39;t really providing more insights: &quot;Using &#39;Executable&#39; as a concrete type conforming to protocol &#39;Executable&#39; is not supported&quot;.</div><div><br></div><div>Where can I find more about this behaviour in the Swift Language Specification? Is this a known bug?</div><div><br></div><div>Thanks,</div><div>  Matthias</div><div><br></div></div>