PR libstdc++/86874 fix std::variant::swap regression
PR libstdc++/86874
* include/std/variant (_Copy_ctor_base::_M_destructive_move): Define
here instead of in _Move_assign_base.
(_Copy_ctor_base<true, _Types...>::_M_destructive_move): Define.
(_Copy_assign_base::operator=): Use _M_destructive_move when changing
the contained value to another alternative.
(_Move_assign_base::operator=): Likewise.
(_Move_assign_base::_M_destructive_move): Remove.
* testsuite/20_util/variant/86874.cc: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263365 138bc75d-0d04-0410-961f-82ee72b054a4