]> git.ipfire.org Git - thirdparty/gcc.git/commit
libstdc++: Fix unordered containers move constructors noexcept qualification
authorFrançois Dumont <fdumont@gcc.gnu.org>
Mon, 20 Jan 2020 18:15:43 +0000 (19:15 +0100)
committerGiuliano Belinassi <giuliano.belinassi@usp.br>
Mon, 17 Aug 2020 16:20:01 +0000 (13:20 -0300)
commite027de726abb223b0b9dd642a0ccf0ab58286286
tree230d622277e63b914739c5b98676a9c1e7515a31
parent54f2e5942de72c5308c97b01ee241ea07c3fa1d0
libstdc++: Fix unordered containers move constructors noexcept qualification

_Hashtable move constructor is wrongly qualified as noexcept(true) regardless of
_Equal and _H1 copy constructor qualifications.
_Hashtable allocator-aware move constructor is missing its noexcept
qualification like the depending unordered containers ones.

libstdc++-v3/ChangeLog:

* include/bits/hashtable.h
(_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)):
Add noexcept qualification.
(_Hashtable(_Hashtable&&)): Fix noexcept qualification.
(_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept
qualification.
* include/bits/unordered_map.h
(unordered_map(unordered_map&&, const allocator_type&)): Add noexcept
qualification.
(unordered_multimap(unordered_multimap&&, const allocator_type&)):
Likewise.
* include/bits/unordered_set.h
(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
(unordered_multiset(unordered_multiset&&, const allocator_type&)):
Likewise.
* include/debug/unordered_map
(unordered_map(unordered_map&&, const allocator_type&)): Likewise.
(unordered_multimap(unordered_multimap&&, const allocator_type&)):
Likewise.
* include/debug/unordered_set
(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
(unordered_multiset(unordered_multiset&&, const allocator_type&)):
Likewise.
* testsuite/23_containers/unordered_map/allocator/default_init.cc:
New test.
* testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc:
New test.
* testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
New test.
* testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
New test.
* testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc:
New test.
* testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
New test.
* testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
New test.
* testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
New test.
* testsuite/23_containers/unordered_set/allocator/default_init.cc:
New test.
* testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
New test.
* testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
New test.
16 files changed:
libstdc++-v3/include/bits/hashtable.h
libstdc++-v3/include/bits/unordered_map.h
libstdc++-v3/include/bits/unordered_set.h
libstdc++-v3/include/debug/unordered_map
libstdc++-v3/include/debug/unordered_set
libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc [new file with mode: 0644]