https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93562
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-9 branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>: https://gcc.gnu.org/g:30cb4c78ea6563177c43f897e480d9993c38c0ed commit r9-8285-g30cb4c78ea6563177c43f897e480d9993c38c0ed Author: Jonathan Wakely <jwak...@redhat.com> Date: Wed Feb 26 15:04:53 2020 +0000 libstdc++: Fix regressions in unique_ptr::swap (PR 93562) The requirements for this function are only that the deleter is swappable, but we incorrectly require that the element type is complete and that the deleter can be swapped using std::swap (which requires it to be move cosntructible and move assignable). The fix is to add __uniq_ptr_impl::swap which swaps the pointer and deleter individually, instead of using the generic std::swap on the tuple containing them. PR libstdc++/93562 * include/bits/unique_ptr.h (__uniq_ptr_impl::swap): Define. (unique_ptr::swap, unique_ptr<T[], D>::swap): Call it. * testsuite/20_util/unique_ptr/modifiers/93562.cc: New test.