2018-01-09 François Dumont <fdumont@gcc.gnu.org>
commit688b368a760d056b24bf66dc5a4ce0e74cd2fcfe
authorfdumont <fdumont@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Jan 2018 21:05:10 +0000 (9 21:05 +0000)
committerfdumont <fdumont@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 9 Jan 2018 21:05:10 +0000 (9 21:05 +0000)
treef299bb47be49fefdcc1c4f42f77dac57c278a88f
parent5cc94c5877a1b9c67b212422be96d1498ce05cb6
2018-01-09  François Dumont  <fdumont@gcc.gnu.org>

PR libstdc++/83709
* include/bits/hashtable_policy.h
(__distance_fwd(_Iterator, _Iterator, input_iterator_tag)): Return 1 if
__first != __last.
(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, true_type)): New.
(_Insert_base::_M_insert_range(_Ite, _Ite, _NodeGetter, false_type)):
Add false_type parameter.
(_Insert_base::insert): Adapt.
* include/bits/hashtable.h (_Hashtable::operator=(initializzr_list<>)):
Adapt.
(_Hashtable::_M_insert(_Arg&&, const _NodeGen&, true_type, size_t)):
 Add __n_elt parameter, defaulted to 1.
(_Hashtable::_M_insert_unique_node): Likewise. Use it to call rehash
policy _M_need_rehash.
(_Hashtable::_M_merge_unique): Pass target number of elements to add to
produce only 1 rehash if necessary.
* testsuite/23_containers/unordered_map/insert/83709.cc: New.
* testsuite/23_containers/unordered_set/insert/83709.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@256396 138bc75d-0d04-0410-961f-82ee72b054a4
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/hashtable.h
libstdc++-v3/include/bits/hashtable_policy.h
libstdc++-v3/testsuite/23_containers/unordered_map/insert/83709.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/insert/83709.cc [new file with mode: 0644]