This libstc++ hack isn't ready for removal. Updating the comment to note what I found. While I have not proven Ville's __is_throw_swappable patch made this go away, that patch did remove the use of noexcept(noexcept(swap(....))). I'm not sure when gcc grew deferred noexcept parsing.
Here are my findings around this issue: https://godbolt.org/z/TE9rdxae8
So GCC started parsing this correctly from 9.4 to 10.1.
It does not look like they have a workaround for their own older libstdc++.
It seems to me this HACK is ready for removal. Is there something else I might be missing?