С var Swift говорит, что не может передать неизменяемое значение в качестве аргумента inout

Я не могу расшифровать это сообщение об ошибке. Этот код компилируется и запускается

struct A {
    var x: Int
}
var a = A(x: 123)
let result = withUnsafePointer(to: &a) {
    print("ptr is \($0)")
    // return 1
}
print("result is \(result)")

Но если вы раскомментируете эту строку return 1, компиляция завершится ошибкой. Xcode выделяет &a и говорит: Невозможно передать неизменяемое значение типа 'inout A' в качестве входного аргумента.

Что это значит? Может быть, это просто глючное сообщение об ошибке?

(Xcode 8, бета 6)


person Rob N    schedule 27.08.2016    source источник
comment
Это, скорее всего, связано с тем, что компилятор может вывести возвращаемый тип замыкания только в том случае, если это одно выражение, или из контекста вызова (см., Например, Ответ Мартина на этот вопрос и ответ) — добавление явной аннотации типа позволяет компилировать ваш код. Однако вам, вероятно, следует отправить отчет об ошибке в этом бесполезном сообщении об ошибке.   -  person Hamish    schedule 28.08.2016
comment
Спасибо. Только что сообщил об ошибке: bugs.swift.org/browse/SR-2501   -  person Rob N    schedule 28.08.2016