diff --git a/doc/changes.qbk b/doc/changes.qbk
index 682e36e6..e29b7a85 100644
--- a/doc/changes.qbk
+++ b/doc/changes.qbk
@@ -31,7 +31,6 @@ First official release.
* Emplace support when rvalue references and variadic template are available.
* More efficient node allocation when rvalue references and variadic template
are available.
-* Added equality operators and hash functions
- ([@http://svn.boost.org/trac/boost/ticket/1557 Ticket 1557]).
+* Added equality operators.
[endsect]
diff --git a/doc/rationale.qbk b/doc/rationale.qbk
index 908bb5e3..63ca6441 100644
--- a/doc/rationale.qbk
+++ b/doc/rationale.qbk
@@ -104,8 +104,6 @@ implemented. They are specified
differently to the standard associative containers, comparing keys
using the equality predicate rather than `operator==`. This is inconsistent
with the other containers but it is probably closer to user's expectations.
-I have also added a `hash_value` free function so that the containers can be
-hashed by [classref boost::hash].
[h2 Active Issues and Proposals]
diff --git a/doc/ref.xml b/doc/ref.xml
index f33aec2a..d7dd9259 100644
--- a/doc/ref.xml
+++ b/doc/ref.xml
@@ -702,25 +702,6 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
This is a boost extension.
-
-
-
-
-
-
-
-
-
-
-
-
- unordered_set<Value, Hash, Pred, Alloc> const&
-
- std::size_t
-
- This is a boost extension.
-
-
@@ -1449,25 +1430,6 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
This is a boost extension.
-
-
-
-
-
-
-
-
-
-
-
-
- unordered_multiset<Value, Hash, Pred, Alloc> const&
-
- std::size_t
-
- This is a boost extension.
-
-
@@ -2249,27 +2211,6 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
This is a boost extension.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- unordered_map<Key, Mapped, Hash, Pred, Alloc> const&
-
- std::size_t
-
- This is a boost extension.
-
-
@@ -3012,27 +2953,6 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
This is a boost extension.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- unordered_multimap<Key, Mapped, Hash, Pred, Alloc> const&
-
- std::size_t
-
- This is a boost extension.
-
-
diff --git a/include/boost/unordered/detail/hash_table_impl.hpp b/include/boost/unordered/detail/hash_table_impl.hpp
index fc8443ee..e78962fb 100644
--- a/include/boost/unordered/detail/hash_table_impl.hpp
+++ b/include/boost/unordered/detail/hash_table_impl.hpp
@@ -2245,61 +2245,6 @@ namespace boost {
return true;
}
- //
- // hash_value - unordered container hash function.
- //
-
- template
- std::size_t group_hash(BOOST_UNORDERED_TABLE const& t,
- typename BOOST_UNORDERED_TABLE_DATA::link_ptr it,
- type_wrapper*)
- {
- typedef BOOST_UNORDERED_TABLE_DATA data;
- std::size_t seed = data::group_count(it);
- std::size_t hashed_key = t.hash_function()(data::get_value(it));
- boost::hash_combine(seed, hashed_key);
- return seed;
- }
-
- template
- std::size_t group_hash(BOOST_UNORDERED_TABLE const& t,
- typename BOOST_UNORDERED_TABLE_DATA::link_ptr it,
- void*)
- {
- typedef BOOST_UNORDERED_TABLE_DATA data;
- typedef typename data::link_ptr link_ptr;
-
- std::size_t seed = t.hash_function()(data::get_value(it).first);
-
- link_ptr end = data::next_group(it);
-
- do {
- boost::hash_combine(seed, data::get_value(it).second);
- it = it->next_;
- } while(it != end);
-
- return seed;
- }
-
- template
- std::size_t hash_value(BOOST_UNORDERED_TABLE const& t)
- {
- typedef BOOST_UNORDERED_TABLE_DATA data;
- typedef typename data::link_ptr link_ptr;
- typedef typename data::bucket_ptr bucket_ptr;
-
- std::size_t seed = 0;
-
- for(bucket_ptr i = t.data_.cached_begin_bucket_,
- j = t.data_.buckets_end(); i != j; ++i)
- {
- for(link_ptr it(i->next_); BOOST_UNORDERED_BORLAND_BOOL(it); it = data::next_group(it))
- seed ^= group_hash(t, it, (type_wrapper*)0);
- }
-
- return seed;
- }
-
// Iterators
template class BOOST_UNORDERED_ITERATOR;
diff --git a/include/boost/unordered_map.hpp b/include/boost/unordered_map.hpp
index 5f711650..484cf42f 100644
--- a/include/boost/unordered_map.hpp
+++ b/include/boost/unordered_map.hpp
@@ -40,8 +40,6 @@ namespace boost
bool operator!=(unordered_map const&,
unordered_map const&);
template
- std::size_t hash_value(unordered_map const&);
- template
void swap(unordered_map&,
unordered_map&);
@@ -58,8 +56,6 @@ namespace boost
bool operator!=(unordered_multimap const&,
unordered_multimap const&);
template
- std::size_t hash_value(unordered_multimap const&);
- template
void swap(unordered_multimap&,
unordered_multimap&);
@@ -424,11 +420,9 @@ namespace boost
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
friend bool operator==(unordered_map const&, unordered_map const&);
friend bool operator!=(unordered_map const&, unordered_map const&);
- friend std::size_t hash_value(unordered_map const&);
#else
friend bool operator==<>(unordered_map const&, unordered_map const&);
friend bool operator!=<>(unordered_map const&, unordered_map const&);
- friend std::size_t hash_value<>(unordered_map const&);
#endif
}; // class template unordered_map
@@ -446,12 +440,6 @@ namespace boost
return !boost::unordered_detail::equals(m1.base, m2.base);
}
- template
- inline std::size_t hash_value(unordered_map const& m)
- {
- return boost::unordered_detail::hash_value(m.base);
- }
-
template
inline void swap(unordered_map &m1,
unordered_map &m2)
@@ -804,11 +792,9 @@ namespace boost
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
friend bool operator==(unordered_multimap const&, unordered_multimap const&);
friend bool operator!=(unordered_multimap const&, unordered_multimap const&);
- friend std::size_t hash_value(unordered_multimap const&);
#else
friend bool operator==<>(unordered_multimap const&, unordered_multimap const&);
friend bool operator!=<>(unordered_multimap const&, unordered_multimap const&);
- friend std::size_t hash_value<>(unordered_multimap const&);
#endif
}; // class template unordered_multimap
@@ -826,12 +812,6 @@ namespace boost
return !boost::unordered_detail::equals(m1.base, m2.base);
}
- template
- inline std::size_t hash_value(unordered_multimap const& m)
- {
- return boost::unordered_detail::hash_value(m.base);
- }
-
template
inline void swap(unordered_multimap &m1,
unordered_multimap &m2)
diff --git a/include/boost/unordered_set.hpp b/include/boost/unordered_set.hpp
index 0f34c0fd..5b82f002 100644
--- a/include/boost/unordered_set.hpp
+++ b/include/boost/unordered_set.hpp
@@ -39,8 +39,6 @@ namespace boost
bool operator!=(unordered_set const&,
unordered_set const&);
template
- std::size_t hash_value(unordered_set const& m);
- template
void swap(unordered_set &m1,
unordered_set &m2);
@@ -56,8 +54,6 @@ namespace boost
bool operator!=(unordered_multiset const&,
unordered_multiset const&);
template
- std::size_t hash_value(unordered_multiset const& m);
- template
void swap(unordered_multiset &m1,
unordered_multiset &m2);
@@ -394,11 +390,9 @@ namespace boost
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
friend bool operator==(unordered_set const&, unordered_set const&);
friend bool operator!=(unordered_set const&, unordered_set const&);
- friend std::size_t hash_value(unordered_set const&);
#else
friend bool operator==<>(unordered_set const&, unordered_set const&);
friend bool operator!=<>(unordered_set const&, unordered_set const&);
- friend std::size_t hash_value<>(unordered_set const&);
#endif
}; // class template unordered_set
@@ -416,12 +410,6 @@ namespace boost
return !boost::unordered_detail::equals(m1.base, m2.base);
}
- template
- inline std::size_t hash_value(unordered_set const& m)
- {
- return boost::unordered_detail::hash_value(m.base);
- }
-
template
inline void swap(unordered_set &m1,
unordered_set &m2)
@@ -759,11 +747,9 @@ namespace boost
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
friend bool operator==(unordered_multiset const&, unordered_multiset const&);
friend bool operator!=(unordered_multiset const&, unordered_multiset const&);
- friend std::size_t hash_value(unordered_multiset const&);
#else
friend bool operator==<>(unordered_multiset const&, unordered_multiset const&);
friend bool operator!=<>(unordered_multiset const&, unordered_multiset const&);
- friend std::size_t hash_value<>(unordered_multiset const&);
#endif
}; // class template unordered_multiset
@@ -781,12 +767,6 @@ namespace boost
return !boost::unordered_detail::equals(m1.base, m2.base);
}
- template
- inline std::size_t hash_value(unordered_multiset const& m)
- {
- return boost::unordered_detail::hash_value(m.base);
- }
-
template
inline void swap(unordered_multiset &m1,
unordered_multiset &m2)
diff --git a/test/unordered/compile_tests.hpp b/test/unordered/compile_tests.hpp
index 5e65a72d..34265fca 100644
--- a/test/unordered/compile_tests.hpp
+++ b/test/unordered/compile_tests.hpp
@@ -168,11 +168,6 @@ void equality_test(X& r)
test::check_return_type::equals(a == b);
test::check_return_type::equals(a != b);
-#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
- test::check_return_type::equals(boost::hash_value(a));
-#else
- test::check_return_type::equals(hash_value(a));
-#endif
}
template