<div dir="ltr"><div>Hi,</div><div><br></div><div>I got a build error &quot;Generic parameter &#39;T&#39; could not be inferred&quot; for the following code.</div><div><br></div><div>Can anyone explain why we can&#39;t use a protocol to infer the generic type T?</div><div><br></div><div>class Emitter {</div><div>    func emit&lt;T: Emittable&gt;() -&gt; T {</div><div>        ...</div><div>    }</div><div>}</div><div><br></div><div>protocol Emittable {}</div><div>protocol Subemittable: Emitable {}</div><div><br></div><div>class ConcreteEmittable: Subemittable {}</div><div><br></div><div>func testCode() {</div><div>    let emitter = Emitter()</div><div><br></div><div><div>    // Error: Generic parameter &#39;T&#39; could not be inferred</div><div>    let _: Emittable = emitter.emit()</div></div><div><br></div><div><div>    // Error: Generic parameter &#39;T&#39; could not be inferred</div><div>    let _: Subemittable = emitter.emit()</div></div><div><br></div><div>    // This works</div><div>    let _: ConcreteEmittable = emitter.emit()</div><div>}</div><div><br></div><div>Thanks,</div><div>Satoshi</div><div><br></div></div>