$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: daniel_james_at_[hidden]
Date: 2007-12-08 13:17:45
Author: danieljames
Date: 2007-12-08 13:17:45 EST (Sat, 08 Dec 2007)
New Revision: 41902
URL: http://svn.boost.org/trac/boost/changeset/41902
Log:
Only need a single templates 'hash_types' class.
Text files modified: 
   sandbox-branches/unordered-refactor/boost/unordered/detail/hash_table.hpp |    42 +++++++++++++-------------------------- 
   1 files changed, 14 insertions(+), 28 deletions(-)
Modified: sandbox-branches/unordered-refactor/boost/unordered/detail/hash_table.hpp
==============================================================================
--- sandbox-branches/unordered-refactor/boost/unordered/detail/hash_table.hpp	(original)
+++ sandbox-branches/unordered-refactor/boost/unordered/detail/hash_table.hpp	2007-12-08 13:17:45 EST (Sat, 08 Dec 2007)
@@ -2198,50 +2198,36 @@
         };
 
         template <class ValueType, class KeyType,
-            class Hash, class Pred, class Alloc>
-        class hash_types_unique_keys
+            class Hash, class Pred, class Alloc, class EquivKeys>
+        class hash_types
         {
         public:
             typedef BOOST_DEDUCED_TYPENAME
                 boost::unordered_detail::rebind_wrap<Alloc, ValueType>::type
                 value_allocator;
 
-            typedef hash_table_data<value_allocator, boost::mpl::false_> data;
+            typedef hash_table_data<value_allocator, EquivKeys> data;
             typedef hash_table<ValueType, KeyType, Hash, Pred,
-                    value_allocator, boost::mpl::false_> hash_table;
+                    value_allocator, EquivKeys> hash_table;
             typedef BOOST_DEDUCED_TYPENAME data::iterator_base iterator_base;
 
-            typedef hash_const_local_iterator<value_allocator, boost::mpl::false_> const_local_iterator;
-            typedef hash_local_iterator<value_allocator, boost::mpl::false_> local_iterator;
-            typedef hash_const_iterator<value_allocator, boost::mpl::false_> const_iterator;
-            typedef hash_iterator<value_allocator, boost::mpl::false_> iterator;
+            typedef hash_const_local_iterator<value_allocator, EquivKeys> const_local_iterator;
+            typedef hash_local_iterator<value_allocator, EquivKeys> local_iterator;
+            typedef hash_const_iterator<value_allocator, EquivKeys> const_iterator;
+            typedef hash_iterator<value_allocator, EquivKeys> iterator;
 
             typedef BOOST_DEDUCED_TYPENAME data::size_type size_type;
             typedef std::ptrdiff_t difference_type;
         };
 
-        template <class ValueType, class KeyType,
-            class Hash, class Pred, class Alloc>
-        class hash_types_equivalent_keys
-        {
-        public:
-            typedef BOOST_DEDUCED_TYPENAME
-                boost::unordered_detail::rebind_wrap<Alloc, ValueType>::type
-                value_allocator;
-
-            typedef hash_table_data<value_allocator, boost::mpl::true_> data;
-            typedef hash_table<ValueType, KeyType, Hash, Pred,
-                    value_allocator, boost::mpl::true_> hash_table;
-            typedef BOOST_DEDUCED_TYPENAME data::iterator_base iterator_base;
+        template <class ValueType, class KeyType, class Hash, class Pred, class Alloc>
+        class hash_types_unique_keys
+            : public hash_types<ValueType, KeyType, Hash, Pred, Alloc, boost::mpl::false_> {};
 
-            typedef hash_const_local_iterator<value_allocator, boost::mpl::true_> const_local_iterator;
-            typedef hash_local_iterator<value_allocator, boost::mpl::true_> local_iterator;
-            typedef hash_const_iterator<value_allocator, boost::mpl::true_> const_iterator;
-            typedef hash_iterator<value_allocator, boost::mpl::true_> iterator;
+        template <class ValueType, class KeyType, class Hash, class Pred, class Alloc>
+        class hash_types_equivalent_keys
+            : public hash_types<ValueType, KeyType, Hash, Pred, Alloc, boost::mpl::true_> {};
 
-            typedef BOOST_DEDUCED_TYPENAME data::size_type size_type;
-            typedef std::ptrdiff_t difference_type;
-        };
     } // namespace boost::unordered_detail
 } // namespace boost