Why doesn't compiler allow the first "execute" line here?
protocol Proto {}
struct A: Proto {}
func foo<T: Proto>(execute: (T) -> Void) {
// execute(A()) // Cannot convert value of type 'A' to expected argument type 'T'
execute(A() as! T) // ok
}
protocol Proto {}
struct A: Proto {}
func foo<T: Proto>(execute: (T) -> Void) {
execute(A()) // Should this work when `execute == bar`?
}
struct B: Proto {
var a: Int
}
func bar(b: B) { print(b.a) }
foo(bar)