The compiler has no way of inferring the type of the generic ContentType parameter because you're not using that parameter anywhere in the body of the closure that could give the compiler a hint. So you have to provide the type manually by explicitly annotating the type of the closure's parameter.
For example, if you want to treat `items` as a series of `UInt8` values:
let tryThis = items.withUnsafeBytes {
(bytes: UnsafePointer<UInt8>) -> Int in
return 1
}
I agree the compiler diagnostic should probably be better, though.
That makes sense. I think I've gotten so used to the type system magically figuring out what I want, combined with the error message pointing to the return type that this just went right over my head.
···
--
Chris McIntyre
On Sep 4, 2016, at 3:59 PM, Ole Begemann via swift-users <swift-users@swift.org> wrote:
The compiler has no way of inferring the type of the generic ContentType parameter because you're not using that parameter anywhere in the body of the closure that could give the compiler a hint. So you have to provide the type manually by explicitly annotating the type of the closure's parameter.
For example, if you want to treat `items` as a series of `UInt8` values:
let tryThis = items.withUnsafeBytes {
(bytes: UnsafePointer<UInt8>) -> Int in
return 1
}
I agree the compiler diagnostic should probably be better, though.