func foo(_ x: UnsafePointer<Int>) { print(x.pointee) } func foo(_ x: UnsafePointer<[Int]>) { print(x.pointee) } var a = 42 foo(&a) // OK var b = [42] foo(&b) // error: ambiguous use of 'foo'