From what @hborla told me, the reason why lazy is not yet generalized is due to a couple of short-comings of property wrappers which are being addressed:
- It's not as efficient because the property wrapper has to store the initialization closure in each instance. There is a pitch to make this more efficient (Add shared storage to property wrappers).
- Allowing lazy as a property wrapper to access the enclosing
self. This requires syntax changes which haven't been completely flushed out.
If we are talking about implementation, and not the language then - yes. There are multiple ongoing efforts in the type-checker to do just that: generalize all of the performance hacks, closure, result builder handling etc.