$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r73679 - trunk/boost/unordered/detail
From: dnljms_at_[hidden]
Date: 2011-08-11 17:18:20
Author: danieljames
Date: 2011-08-11 17:18:19 EDT (Thu, 11 Aug 2011)
New Revision: 73679
URL: http://svn.boost.org/trac/boost/changeset/73679
Log:
Unordered: Starting to implement allocator propagation.
Text files modified: 
   trunk/boost/unordered/detail/buckets.hpp    |    11 ++++++++++-                             
   trunk/boost/unordered/detail/equivalent.hpp |     4 +++-                                    
   trunk/boost/unordered/detail/table.hpp      |     2 +-                                      
   trunk/boost/unordered/detail/unique.hpp     |     4 +++-                                    
   4 files changed, 17 insertions(+), 4 deletions(-)
Modified: trunk/boost/unordered/detail/buckets.hpp
==============================================================================
--- trunk/boost/unordered/detail/buckets.hpp	(original)
+++ trunk/boost/unordered/detail/buckets.hpp	2011-08-11 17:18:19 EDT (Thu, 11 Aug 2011)
@@ -103,7 +103,16 @@
             allocators_(a,a)
         {
         }
-    
+
+        // TODO: Need to move allocators_, not copy. But compressed_pair
+        // doesn't support move parameters.
+        buckets(buckets& b, move_tag m)
+          : buckets_(),
+            bucket_count_(b.bucket_count),
+            allocators_(b.allocators_)
+        {
+        }
+        
         inline ~buckets()
         {
             if(this->buckets_) { this->delete_buckets(); }
Modified: trunk/boost/unordered/detail/equivalent.hpp
==============================================================================
--- trunk/boost/unordered/detail/equivalent.hpp	(original)
+++ trunk/boost/unordered/detail/equivalent.hpp	2011-08-11 17:18:19 EDT (Thu, 11 Aug 2011)
@@ -34,7 +34,9 @@
             hasher const& hf, key_equal const& eq, value_allocator const& a)
           : table_base(n, hf, eq, a) {}
         equivalent_table(equivalent_table const& x)
-          : table_base(x, x.node_alloc()) {}
+          : table_base(x,
+                allocator_traits<node_allocator>::
+                select_on_container_copy_construction(x.node_alloc())) {}
         equivalent_table(equivalent_table const& x,
             value_allocator const& a)
           : table_base(x, a) {}
Modified: trunk/boost/unordered/detail/table.hpp
==============================================================================
--- trunk/boost/unordered/detail/table.hpp	(original)
+++ trunk/boost/unordered/detail/table.hpp	2011-08-11 17:18:19 EDT (Thu, 11 Aug 2011)
@@ -203,7 +203,7 @@
         }
 
         table(table& x, move_tag)
-          : buckets(x.node_alloc(), x.bucket_count_),
+          : buckets(boost::move(x.node_alloc()), x.bucket_count_),
             functions(x),
             size_(0),
             mlf_(1.0f),
Modified: trunk/boost/unordered/detail/unique.hpp
==============================================================================
--- trunk/boost/unordered/detail/unique.hpp	(original)
+++ trunk/boost/unordered/detail/unique.hpp	2011-08-11 17:18:19 EDT (Thu, 11 Aug 2011)
@@ -36,7 +36,9 @@
             value_allocator const& a)
           : table_base(n, hf, eq, a) {}
         unique_table(unique_table const& x)
-          : table_base(x, x.node_alloc()) {}
+          : table_base(x,
+                allocator_traits<node_allocator>::
+                select_on_container_copy_construction(x.node_alloc())) {}
         unique_table(unique_table const& x, value_allocator const& a)
           : table_base(x, a) {}
         unique_table(unique_table& x, move_tag m)