I read that. I disagree that it should apply universally to all closures. I believe we'll arrive at a better ground if the decision lies in the type of the wrapper. So,
struct WithInit {} // has init(wrappedValue:)
struct NoInit {} // no init
func foo1(@WithInit a: Int) // (Int) -> ()
func foo2(@NoInit a: Int) // (NoInit) -> ()
let bar1 = foo1 // (Int) -> ()
let bar2 = foo2 // (NoInt) -> ()
let baz1 = { (@WithInit a) in } // (Int) -> ()
let baz2 = { (@NoInit a) in } // (NoInit) -> ()
It leads to a lot less surprise if since now the function, Unapplied Method Reference (UMR), and the closure syntax would have the same API (and ABI to since they're all using wrapper on the ABI level).