Not that I know of. Once the code path gets to g(), the compiler knows that the function is specifically an (Int)->Void, as opposed to the generic (T)->Void, and it’ll always go for the most specific overload. AFAIK, anyway.
- Dave Sweeris
···
On May 2, 2017, at 4:39 PM, Nevin Brackett-Rozinsky via swift-users <swift-users@swift.org> wrote:
However if I *also* write a non-generic function like this:
func f(_ x: Int) { print("Int: \(x)") }
Then when I make the same call as before:
g(f) // Prints “Int: 0”
It passes in the new, non-generic version.
Is there something I can do, with both versions of f defined, to pass the generic f into g?
Not that I know of. Once the code path gets to g(), the compiler knows that the function is specifically an (Int)->Void, as opposed to the generic (T)->Void, and it’ll always go for the most specific overload. AFAIK, anyway.