<div dir="ltr"><div>If I write a generic function like this:</div><div><br></div><div><font face="monospace, monospace">func f&lt;T&gt;(_ x: T) { print(&quot;Generic: \(x)&quot;) }</font></div><div><br></div><div>I can pass it to another function like this:</div><div><br></div><div><font face="monospace, monospace">func g(_ fn: (Int) -&gt; Void) { fn(0) }</font></div><div><font face="monospace, monospace">g(f)    // Prints “Generic: 0”</font></div><div><br></div><div>However if I *also* write a non-generic function like this:</div><div><br></div><div><font face="monospace, monospace">func f(_ x: Int) { print(&quot;Int: \(x)&quot;) }</font><br></div><div><br></div><div>Then when I make the same call as before:</div><div><br></div><div><font face="monospace, monospace">g(f)    // Prints “Int: 0”</font></div><div><br></div><div>It passes in the new, non-generic version.</div><div><br></div><div>Is there something I can do, with both versions of f defined, to pass the generic f into g?</div><div><br></div><div>Nevin</div></div>