$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r85517 - trunk/boost/geometry/index/detail/rtree
From: adam.wulkiewicz_at_[hidden]
Date: 2013-08-29 18:59:02
Author: awulkiew
Date: 2013-08-29 18:59:02 EDT (Thu, 29 Aug 2013)
New Revision: 85517
URL: http://svn.boost.org/trac/boost/changeset/85517
Log:
[geometry][index] type-erased query iterators move semantics implemented using Boost.Move replaced by c++11 rval refs if supported. Error in move assign fixed.
Text files modified: 
   trunk/boost/geometry/index/detail/rtree/query_iterators.hpp |    20 ++++++++++++++++++--                    
   1 files changed, 18 insertions(+), 2 deletions(-)
Modified: trunk/boost/geometry/index/detail/rtree/query_iterators.hpp
==============================================================================
--- trunk/boost/geometry/index/detail/rtree/query_iterators.hpp	Thu Aug 29 12:44:18 2013	(r85516)
+++ trunk/boost/geometry/index/detail/rtree/query_iterators.hpp	2013-08-29 18:59:02 EDT (Thu, 29 Aug 2013)	(r85517)
@@ -12,7 +12,7 @@
 #define BOOST_GEOMETRY_INDEX_DETAIL_RTREE_QUERY_ITERATORS_HPP
 
 //#define BOOST_GEOMETRY_INDEX_DETAIL_QUERY_ITERATORS_USE_TYPE_ERASURE
-#define BOOST_GEOMETRY_INDEX_DETAIL_QUERY_ITERATORS_USE_MOVE
+//#define BOOST_GEOMETRY_INDEX_DETAIL_QUERY_ITERATORS_USE_MOVE
 
 namespace boost { namespace geometry { namespace index { namespace detail { namespace rtree { namespace iterators {
 
@@ -284,6 +284,22 @@
         m_ptr.reset(o.m_ptr.get() ? o.m_ptr->clone() : 0);
         return *this;
     }
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+    query_iterator(query_iterator && o)
+        : m_ptr(o.m_ptr.get())
+    {
+        o.m_ptr.release();
+    }
+    query_iterator & operator=(query_iterator && o)
+    {
+        if ( this != boost::addressof(o) )
+        {
+            m_ptr.reset(o.m_ptr.get());
+            o.m_ptr.release();
+        }
+        return *this;
+    }
+#endif
 #else // !BOOST_GEOMETRY_INDEX_DETAIL_QUERY_ITERATORS_USE_MOVE
 private:
     BOOST_COPYABLE_AND_MOVABLE(query_iterator)
@@ -303,7 +319,7 @@
         if ( this != boost::addressof(o) )
         {
             m_ptr.reset(o.m_ptr.get());
-            o.m_ptr.get().release();
+            o.m_ptr.release();
         }
         return *this;
     }