I'm finally getting a chance to catch up on this thread. Thanks for posting this! I'm switching to your technique in my code and wish I would have thought of it myself.
I agree. Nevin hits on some of the reasons I was exploring this direction. I was never able get it as clean as necessary to make it usable. It was working for the two use cases where I needed it and I had to set it aside. Given the way it's actually been needed in practice (narrow cases in library code) I much prefer the simpler approach you came up with.
@Nevin I noticed @_implementationOnly
in your code. I haven't run into that before. I can guess what it might do, but would like to understand it better. Can you explain or point me in the right direction to learn more?