]> git.ipfire.org Git - thirdparty/gcc.git/commit
Implement correct std::variant triviality rules from P0602R4
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 23 Apr 2019 12:48:28 +0000 (12:48 +0000)
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 23 Apr 2019 12:48:28 +0000 (12:48 +0000)
commita4265b66a3fad9bf0ec67255d5c19c87a4e85814
tree68753eed4c1e39d40a754061198ac3b40361b493
parent28cc38ec11e946f47e3ba8f149f44652e0d98ab1
Implement correct std::variant triviality rules from P0602R4

The std::variant move assignment operator should not be trivial if the
variant is not trivially move constructible.

* include/std/variant (__detail::__variant::_Traits): Make
_S_trivial_copy_assign depend on _S_trivial_copy_ctor and make
_S_trivial_move_assign depend on _S_trivial_move_ctor, as per
P0602R4.
(__detail::__variant::_Copy_assign_alias): Only depend on
_S_trivial_copy_assign, which subsumes _S_trivial_copy_ctor now.
* testsuite/20_util/variant/compile.cc: Correct checks for trivial
move assignment operators.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@270510 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/include/std/variant
libstdc++-v3/testsuite/20_util/variant/compile.cc