$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r80562 - trunk/boost/unordered/detail
From: dnljms_at_[hidden]
Date: 2012-09-17 14:59:30
Author: danieljames
Date: 2012-09-17 14:59:29 EDT (Mon, 17 Sep 2012)
New Revision: 80562
URL: http://svn.boost.org/trac/boost/changeset/80562
Log:
Unordered: Support empty containers in node_holder.
Text files modified: 
   trunk/boost/unordered/detail/buckets.hpp |    12 +++++++-----                            
   trunk/boost/unordered/detail/table.hpp   |     9 +++------                               
   2 files changed, 10 insertions(+), 11 deletions(-)
Modified: trunk/boost/unordered/detail/buckets.hpp
==============================================================================
--- trunk/boost/unordered/detail/buckets.hpp	(original)
+++ trunk/boost/unordered/detail/buckets.hpp	2012-09-17 14:59:29 EDT (Mon, 17 Sep 2012)
@@ -444,10 +444,12 @@
             base(b.node_alloc()),
             nodes_()
         {
-            typename Table::previous_pointer prev = b.get_previous_start();
-            nodes_ = static_cast<node_pointer>(prev->next_);
-            prev->next_ = link_pointer();
-            b.size_ = 0;
+            if (b.size_) {
+                typename Table::previous_pointer prev = b.get_previous_start();
+                nodes_ = static_cast<node_pointer>(prev->next_);
+                prev->next_ = link_pointer();
+                b.size_ = 0;
+            }
         }
 
         ~node_holder();
@@ -508,7 +510,7 @@
             }
         }
 
-        iterator get_start() const
+        iterator begin() const
         {
             return iterator(nodes_);
         }
Modified: trunk/boost/unordered/detail/table.hpp
==============================================================================
--- trunk/boost/unordered/detail/table.hpp	(original)
+++ trunk/boost/unordered/detail/table.hpp	2012-09-17 14:59:29 EDT (Mon, 17 Sep 2012)
@@ -400,7 +400,7 @@
 
                 move_nodes<node_allocator> move(node_alloc());
                 node_holder<node_allocator> nodes(x);
-                table_impl::fill_buckets(nodes.get_start(), *this, move);
+                table_impl::fill_buckets(nodes.begin(), *this, move);
             }
         }
 
@@ -765,11 +765,8 @@
                 // elements, assigning to them if possible, and deleting
                 // any that are left over.
                 move_assign_nodes<table> assign(*this);
-
-                if (x.size_) {
-                    node_holder<node_allocator> nodes(x);
-                    table_impl::fill_buckets(nodes.get_start(), *this, assign);
-                }
+                node_holder<node_allocator> nodes(x);
+                table_impl::fill_buckets(nodes.begin(), *this, assign);
             }
         }