gcc/libstdc++-v3/include/debug
François Dumont a188284c61 re PR libstdc++/51608 ([C++11] Unordered containers end(size_type) isn't constant time)
2011-12-29  François Dumont <fdumont@gcc.gnu.org>

	PR libstdc++/51608
	* include/bits/hashtable_policy.h (_Equal_helper<>): New, change the
	way the _Equal functor is used depending on whether hash code is
	cached or not.
	(_Ebo_helper<>): New helper type to introduce EBO when possible.
	(_Hash_code_base): Use _Ebo_helper to limit memory footprint. Move
	_Equal functor management...
	(_Hashtable_base): ...here, new, use _Equal_helper.
	(_Local_iterator_base<>, _Locale_iterator<>, _Locale_const_iterator<>):
	New, use _Hash_code_base, implementation of...
	* include/bits/hashtable.h (_Hashtable<>::local_iterator,
	_Hashtable<>::const_local_iterator): ...those. Add static assertions
	checking that some functors are empty depending on whether hash code
	is cache or not.
	(_Hashtable<>::_M_bucket_index): New overloads using current bucket
	count, use through out the _Hastable<> implementation.
	* include/bits/unordered_set.h (__unordered_set<>,
	__unordered_multiset<>): Cache hash code iff hash functor is not
	empty and not final.
	* include/bits/unordered_map.h (__unordered_map<>,
	__unordered_multimap<>): Likewise.
	* include/debug/unordered_map
	(unordered_map<>::_S_to_local, unordered_multimap<>::_S_to_local):
	Adapt to match new local iterator implementation.
	* include/debug/unordered_set (unordered_set<>::_S_to_local,
	unordered_multiset<>::_S_to_local): Likewise.
	* include/profile/unordered_map (unordered_map<>::_M_profile_destruct,
	unordered_multimap<>::_M_profile_destruct): Enhance thanks to usage of
	local iterators.
	* include/profile/unordered_set (unordered_set<>::_M_profile_destruct,
	unordered_multiset<>::_M_profile_destruct): Likewise.
	* testsuite_files/23_containers/unordered_set/instantiation_neg.cc:
	Fix error line.
	* testsuite_files/23_containers/unordered_set/final_hash.cc: New.
	* testsuite_files/23_containers/unordered_multiset/final_hash.cc: New.
	* testsuite_files/23_containers/unordered_map/final_hash.cc: New.
	* testsuite_files/23_containers/unordered_multimap/final_hash.cc: New.

From-SVN: r182727
2011-12-29 17:58:51 +00:00
..
bitset bitset (operator[](size_t) const): Declare constexpr. 2011-11-19 11:50:44 +00:00
debug.h macros.h (__glibcxx_check_non_empty_range): Define. 2011-12-03 15:35:35 +00:00
deque vector (vector<>::erase(iterator, iterator): Check iterators equality using normal iterators. 2011-10-01 19:21:57 +00:00
formatter.h macros.h (__glibcxx_check_non_empty_range): Define. 2011-12-03 15:35:35 +00:00
forward_list set.h, [...]: Remove base class default constructor calls. 2011-06-29 20:11:50 +00:00
functions.h safe_unordered_base.h, [...]: New, support for unordered sequence safe local iterators. 2011-07-19 19:39:45 +00:00
list set.h, [...]: Remove base class default constructor calls. 2011-06-29 20:11:50 +00:00
macros.h macros.h (__glibcxx_check_non_empty_range): Define. 2011-12-03 15:35:35 +00:00
map Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception. 2009-04-09 17:00:19 +02:00
map.h re PR libstdc++/51142 ([C++0x] map::erase(key) doesn't compile with -D_GLIBCXX_DEBUG.) 2011-11-15 23:28:49 +00:00
multimap.h re PR libstdc++/51142 ([C++0x] map::erase(key) doesn't compile with -D_GLIBCXX_DEBUG.) 2011-11-15 23:28:49 +00:00
multiset.h set.h, [...]: Remove base class default constructor calls. 2011-06-29 20:11:50 +00:00
safe_base.h user.cfg.in: Add macros, directories. 2011-12-10 15:33:06 +00:00
safe_iterator.h safe_unordered_base.h, [...]: New, support for unordered sequence safe local iterators. 2011-07-19 19:39:45 +00:00
safe_iterator.tcc safe_unordered_base.h, [...]: New, support for unordered sequence safe local iterators. 2011-07-19 19:39:45 +00:00
safe_local_iterator.h safe_local_iterator.h (_Safe_local_iterator<>:: _Safe_local_iterator(const _Iterator&, size_type, const _Sequence*)): Fix typo. 2011-07-20 09:40:11 +00:00
safe_local_iterator.tcc user.cfg.in (PDF_HYPERLINKS): To NO. 2011-08-07 07:27:06 +00:00
safe_sequence.h user.cfg.in (PDF_HYPERLINKS): To NO. 2011-08-07 07:27:06 +00:00
safe_sequence.tcc debug.cc: Introduce a mutex pool in get_safe_base_mutex. 2010-11-25 20:53:39 +00:00
safe_unordered_base.h user.cfg.in (PDF_HYPERLINKS): To NO. 2011-08-07 07:27:06 +00:00
safe_unordered_container.h user.cfg.in (PDF_HYPERLINKS): To NO. 2011-08-07 07:27:06 +00:00
safe_unordered_container.tcc safe_unordered_sequence.h, [...]: Rename respectively in... 2011-07-21 19:56:36 +00:00
set Licensing changes to GPLv3 resp. GPLv3 with GCC Runtime Exception. 2009-04-09 17:00:19 +02:00
set.h set.h, [...]: Remove base class default constructor calls. 2011-06-29 20:11:50 +00:00
string basic_string.h (basic_string::at): Move adjacent to other overload. 2011-11-07 00:06:23 +00:00
unordered_map re PR libstdc++/51608 ([C++11] Unordered containers end(size_type) isn't constant time) 2011-12-29 17:58:51 +00:00
unordered_set re PR libstdc++/51608 ([C++11] Unordered containers end(size_type) isn't constant time) 2011-12-29 17:58:51 +00:00
vector hash-long-double-aux.cc: Rename to... 2011-11-18 12:37:06 +00:00