This fixes bug 40124 based on Richard Smith's suggestion. As he pointed out in the bug comments, this implementation does not take up any more space.
Currently, __wrapper is trivially destructible (I think there is an issue about this for C++20, but I cannot find any specifications about it in the standard. Feel free to post a link, and I can update the patch).
This patch relies on issue 2157 which ensures that _Tp is DefaultConstructible (maybe I should add a check for this?).
This can't be marked constexpr because it never produces a constant expression.