PR libstdc++/86874 fix std::variant::swap regression
commita4c655fb498c86c00d6ce4c1ce859f8bf1d39c2b
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Aug 2018 19:13:26 +0000 (7 19:13 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Aug 2018 19:13:26 +0000 (7 19:13 +0000)
treeaf7482d1bdaac35de846258d95325e6731f5b5a4
parentbe331916172433cf822d11bfd5319fc9e08a295f
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
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/variant
libstdc++-v3/testsuite/20_util/variant/86874.cc [new file with mode: 0644]