https://github.com/ldionne approved this pull request. Thanks for the detailed analysis. LGTM, but I suggest adding a `static_cast` at the call site of `__swap_without_allocator` since it would enhance clarity. https://github.com/llvm/llvm-project/pull/178341