Extract the hash and equality functions from hash_table_data_*.

As these are extensions and add extra requirements to the container elements,
they shouldn't be part of hash_table_data_* so that they won't get instantiated
if an unordered container is explicitly instantiated.

Merged revisions 46594-46604 via svnmerge from 
https://svn.boost.org/svn/boost/branches/unordered/trunk


[SVN r46607]
This commit is contained in:
Daniel James
2008-06-22 13:54:45 +00:00
parent 8868fa4687
commit ec1e809fc3
3 changed files with 153 additions and 108 deletions

View File

@ -431,20 +431,20 @@ namespace boost
inline bool operator==(unordered_map<K, T, H, P, A> const& m1,
unordered_map<K, T, H, P, A> const& m2)
{
return m1.base.equals(m2.base);
return boost::unordered_detail::equals(m1.base, m2.base);
}
template <class K, class T, class H, class P, class A>
inline bool operator!=(unordered_map<K, T, H, P, A> const& m1,
unordered_map<K, T, H, P, A> const& m2)
{
return !m1.base.equals(m2.base);
return !boost::unordered_detail::equals(m1.base, m2.base);
}
template <class K, class T, class H, class P, class A>
inline std::size_t hash_value(unordered_map<K, T, H, P, A> const& m)
{
return m.base.hash_value();
return boost::unordered_detail::hash_value(m.base);
}
template <class K, class T, class H, class P, class A>
@ -805,20 +805,20 @@ namespace boost
inline bool operator==(unordered_multimap<K, T, H, P, A> const& m1,
unordered_multimap<K, T, H, P, A> const& m2)
{
return m1.base.equals(m2.base);
return boost::unordered_detail::equals(m1.base, m2.base);
}
template <class K, class T, class H, class P, class A>
inline bool operator!=(unordered_multimap<K, T, H, P, A> const& m1,
unordered_multimap<K, T, H, P, A> const& m2)
{
return !m1.base.equals(m2.base);
return !boost::unordered_detail::equals(m1.base, m2.base);
}
template <class K, class T, class H, class P, class A>
inline std::size_t hash_value(unordered_multimap<K, T, H, P, A> const& m)
{
return m.base.hash_value();
return boost::unordered_detail::hash_value(m.base);
}
template <class K, class T, class H, class P, class A>