[Pitch #3] Property wrappers (formerly known as Property Delegates)

Why would you want to fake the original storage and create a second stored property and waste memory? (Nothing sarcastic in this question.)

If we'd allow this, you could write code as follows, but why would you want that?

class A {
  @IntWrapper(initialValue: 1) var number: Int

  func numberFromA() -> Int {
    return $number.value
  }
}

class B: A {
  @IntWrapper(initialValue: 2) override var number: Int

  func numberFromB() -> Int {
    return $number.value
  }
}

let b = B()
b.numberFromA() // 1
b.numberFromB() // 2