PR libstdc++/86874 fix std::variant::swap regression
authorJonathan Wakely <jwakely@redhat.com>
Tue, 7 Aug 2018 19:13:26 +0000 (20:13 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 7 Aug 2018 19:13:26 +0000 (20:13 +0100)
commit0ec78a936934332735d99894aeedc688aeb89fca
treeaf7482d1bdaac35de846258d95325e6731f5b5a4
parentb7d7c92f24721a10f5b780bb6927c863cc5a45c6
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.

From-SVN: r263365
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/variant
libstdc++-v3/testsuite/20_util/variant/86874.cc [new file with mode: 0644]