$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r58470 - in sandbox/fiber: . boost/fiber boost/fiber/detail boost/fiber/spin libs/fiber/src libs/fiber/test
From: oliver.kowalke_at_[hidden]
Date: 2009-12-20 15:48:13
Author: olli
Date: 2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
New Revision: 58470
URL: http://svn.boost.org/trac/boost/changeset/58470
Log:
- boost.movefor move ops
- default stacksize now 64kB
Text files modified: 
   sandbox/fiber/boost/fiber/detail/future_traits.hpp |     6                                         
   sandbox/fiber/boost/fiber/detail/info.hpp          |    11 -                                       
   sandbox/fiber/boost/fiber/fiber.hpp                |   114 ++++++----------------                  
   sandbox/fiber/boost/fiber/scheduler.hpp            |     9 +                                       
   sandbox/fiber/boost/fiber/spin/future.hpp          |   198 ++++++++------------------------------- 
   sandbox/fiber/change.log                           |     9 +                                       
   sandbox/fiber/libs/fiber/src/fiber.cpp             |    46 ++-------                               
   sandbox/fiber/libs/fiber/test/test_spin_future.cpp |    37 +-----                                  
   8 files changed, 112 insertions(+), 318 deletions(-)
Modified: sandbox/fiber/boost/fiber/detail/future_traits.hpp
==============================================================================
--- sandbox/fiber/boost/fiber/detail/future_traits.hpp	(original)
+++ sandbox/fiber/boost/fiber/detail/future_traits.hpp	2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
@@ -13,10 +13,10 @@
 #include <vector>
 
 #include <boost/config.hpp>
+#include <boost/move/move.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/next_prior.hpp>
 #include <boost/scoped_ptr.hpp>
-#include <boost/thread/detail/move.hpp>
 #include <boost/type_traits/is_convertible.hpp>
 #include <boost/type_traits/is_fundamental.hpp>
 
@@ -35,8 +35,8 @@
         typedef typename boost::mpl::if_<boost::is_fundamental<T>,T,T&&>::type move_dest_type;
 #else
         typedef T& source_reference_type;
-	typedef typename boost::mpl::if_<boost::is_convertible<T&,boost::detail::thread_move_t<T> >,boost::detail::thread_move_t<T>,T const&>::type rvalue_source_type;
-	typedef typename boost::mpl::if_<boost::is_convertible<T&,boost::detail::thread_move_t<T> >,boost::detail::thread_move_t<T>,T>::type move_dest_type;
+	typedef typename boost::mpl::if_<boost::is_convertible<T&, BOOST_RV_REF( T) >, BOOST_RV_REF( T),T const&>::type rvalue_source_type;
+	typedef typename boost::mpl::if_<boost::is_convertible<T&,BOOST_RV_REF( T) >,BOOST_RV_REF( T),T>::type move_dest_type;
 #endif
 
         static void init(storage_type& storage,source_reference_type t)
Modified: sandbox/fiber/boost/fiber/detail/info.hpp
==============================================================================
--- sandbox/fiber/boost/fiber/detail/info.hpp	(original)
+++ sandbox/fiber/boost/fiber/detail/info.hpp	2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
@@ -11,7 +11,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/config.hpp>
-#include <boost/thread/detail/move.hpp>
+#include <boost/move/move.hpp>
 #include <boost/type_traits/remove_reference.hpp>
 
 #include <boost/fiber/detail/config.hpp>
@@ -48,22 +48,15 @@
         info & operator=( info const&);
 
 public:
-#ifdef BOOST_HAS_RVALUE_REFS
-	thread_data( Fn && fn, std::size_t stack_size) :
-		info_base( stack_size),
-		fn_( static_cast< Fn && >( fn) )
-	{}
-#else
         info( Fn fn, std::size_t stack_size) :
                 info_base( stack_size),
                 fn_( fn)
         {}
 
-	info( boost::detail::thread_move_t< Fn > fn, std::size_t stack_size) :
+	info( BOOST_RV_REF( Fn) fn, std::size_t stack_size) :
                 info_base( stack_size),
                 fn_( fn)
         {}
-#endif            
 
         void run()
         { fn_(); }
Modified: sandbox/fiber/boost/fiber/fiber.hpp
==============================================================================
--- sandbox/fiber/boost/fiber/fiber.hpp	(original)
+++ sandbox/fiber/boost/fiber/fiber.hpp	2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
@@ -13,7 +13,7 @@
 #include <boost/bind.hpp>
 #include <boost/config.hpp>
 #include <boost/preprocessor/repetition.hpp>
-#include <boost/thread/detail/move.hpp>
+#include <boost/move/move.hpp>
 #include <boost/type_traits/remove_reference.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <boost/utility.hpp>
@@ -31,7 +31,7 @@
 namespace boost {
 namespace fibers {
 
-#define BOOST_FIBER_DEFAULT_STACKSIZE 8192
+#define BOOST_FIBER_DEFAULT_STACKSIZE 64000
 
 template< typename Strategy >
 class scheduler;
@@ -44,11 +44,11 @@
         friend class scheduler;
         friend class strategy;
 
-	struct dummy;
-
         static void convert_thread_to_fiber();
         static void convert_fiber_to_thread();
 
+	BOOST_COPYABLE_AND_MOVABLE( fiber);
+
         detail::info_base::ptr_t	info_base_;
 
         explicit fiber( detail::info_base::ptr_t);
@@ -59,19 +59,6 @@
 
         void switch_to_( fiber &);
 
-#ifdef BOOST_HAS_RVALUE_REFS
-	template< typename Fn >
-	static detail::info_base::ptr_t make_info_(
-		std::size_t stack_size, Fn && fn)
-	{
-		return detail::info_base::ptr_t(
-			new detail::info< typename remove_reference< Fn >::type >(
-				static_cast< Fn && >( fn), stack_size) );
-	}
-
-	static detail::info_base::ptr_t make_info_(
-		std::size_t stack_size, void ( * fn)() );
-#else
         template< typename Fn >
         static detail::info_base::ptr_t make_info_(
                 std::size_t stack_size, Fn fn)
@@ -82,35 +69,17 @@
 
         template< typename Fn >
         static detail::info_base::ptr_t make_info_(
-		std::size_t stack_size, boost::detail::thread_move_t< Fn > fn)
+		std::size_t stack_size, BOOST_RV_REF( Fn) fn)
         {
                 return detail::info_base::ptr_t(
                         new detail::info< Fn >( fn, stack_size) );
         }
-#endif
 
 public:
         class id;
 
         fiber();
 
-#ifdef BOOST_HAS_RVALUE_REFS
-	template< typename Fn >
-	fiber( Fn && fn) :
-		info_base_( make_info_( BOOST_FIBER_DEFAULT_STACKSIZE, static_cast< Fn && >( fn) ) )
-	{ init_(); }
-
-	fiber( std::size_t stack_size, Fn && fn) :
-		info_base_( make_info_( stack_size, static_cast< Fn && >( fn) ) )
-	{ init_(); }
-
-	fiber( fiber &&);
-	
-	fiber & operator=( fiber &&);
-
-	fiber && move();
-#else
-#ifdef BOOST_NO_SFINAE
         template< typename Fn >
         explicit fiber( Fn fn) :
                 info_base_( make_info_( BOOST_FIBER_DEFAULT_STACKSIZE, fn) )
@@ -120,39 +89,6 @@
         explicit fiber( std::size_t stack_size, Fn fn) :
                 info_base_( make_info_( stack_size, fn) )
         { init_(); }
-#else
-	template< typename Fn >
-	explicit fiber(
-			Fn fn,
-				typename disable_if< boost::is_convertible< Fn &, boost::detail::thread_move_t< Fn > >, dummy * >::type = 0) :
-		info_base_( make_info_( BOOST_FIBER_DEFAULT_STACKSIZE, fn) )
-	{ init_(); }
-
-	template< typename Fn >
-	explicit fiber(
-			std::size_t stack_size, Fn fn,
-			typename disable_if< boost::is_convertible< Fn &, boost::detail::thread_move_t< Fn > >, dummy * >::type = 0) :
-		info_base_( make_info_( stack_size, fn) )
-	{ init_(); }
-#endif
-	template< typename Fn >
-	explicit fiber( boost::detail::thread_move_t< Fn > fn) :
-		info_base_( make_info_( BOOST_FIBER_DEFAULT_STACKSIZE, fn) )
-	{ init_(); }
-
-	template< typename Fn >
-	explicit fiber( std::size_t stack_size, boost::detail::thread_move_t< Fn > fn) :
-		info_base_( make_info_( stack_size, fn) )
-	{ init_(); }
-
-	fiber( boost::detail::thread_move_t< fiber >);
-	
-	fiber & operator=( boost::detail::thread_move_t< fiber >);
-	
-	operator boost::detail::thread_move_t< fiber >();
-	
-	boost::detail::thread_move_t< fiber > move();
-#endif
 
 #define BOOST_FIBER_ARG(z, n, unused) \
    BOOST_PP_CAT(A, n) BOOST_PP_CAT(a, n)
@@ -166,6 +102,7 @@
                                 BOOST_FIBER_DEFAULT_STACKSIZE, \
                                 boost::bind( boost::type< void >(), fn, BOOST_PP_ENUM_PARAMS(n, a)) ) ) \
         { init_(); } \
+	\
         template< typename Fn, BOOST_PP_ENUM_PARAMS(n, typename A) > \
         fiber( std::size_t stack_size, Fn fn, BOOST_ENUM_FIBER_ARGS(n)) : \
                 info_base_( \
@@ -182,6 +119,24 @@
 
 #undef BOOST_FIBER_FIBER_CTOR
 
+	template< typename Fn >
+	explicit fiber( BOOST_RV_REF( Fn) fn) :
+		info_base_( make_info_( BOOST_FIBER_DEFAULT_STACKSIZE, fn) )
+	{ init_(); }
+
+	template< typename Fn >
+	explicit fiber( std::size_t stack_size, BOOST_RV_REF( Fn) fn) :
+		info_base_( make_info_( stack_size, fn) )
+	{ init_(); }
+
+	fiber( fiber const& other);
+
+	fiber & operator=( BOOST_COPY_ASSIGN_REF( fiber) other);
+
+	fiber( BOOST_RV_REF( fiber) other);
+
+	fiber & operator=( BOOST_RV_REF( fiber) other);
+
         typedef detail::info_base::ptr_t::unspecified_bool_type	unspecified_bool_type;
 
         operator unspecified_bool_type() const;
@@ -263,17 +218,18 @@
 fiber make_fiber( std::size_t stack_size, Fn fn)
 { return fiber( stack_size, fn); }
 
-#define BOOST_FIBER_make_info_FUNCTION(z, n, unused) \
+#define BOOST_FIBER_MAKE_FIBER_FUNCTION(z, n, unused) \
 template< typename Fn, BOOST_PP_ENUM_PARAMS(n, typename A) > \
 fiber make_fiber( Fn fn, BOOST_ENUM_FIBER_ARGS(n)) \
 { return fiber( fn, BOOST_PP_ENUM_PARAMS(n, a) ); } \
+\
 template< typename Fn, BOOST_PP_ENUM_PARAMS(n, typename A) > \
 fiber make_fiber( std::size_t stack_size, Fn fn, BOOST_ENUM_FIBER_ARGS(n)) \
 { return fiber( stack_size, fn, BOOST_PP_ENUM_PARAMS(n, a) ); }
 
-BOOST_PP_REPEAT_FROM_TO( 1, BOOST_FIBER_MAX_ARITY, BOOST_FIBER_make_info_FUNCTION, ~)
+BOOST_PP_REPEAT_FROM_TO( 1, BOOST_FIBER_MAX_ARITY, BOOST_FIBER_MAKE_FIBER_FUNCTION, ~)
 
-#undef BOOST_FIBER_make_info_FUNCTION
+#undef BOOST_FIBER_MAKE_FIBER_FUNCTION
 #undef BOOST_ENUM_FIBER_ARGS
 #undef BOOST_FIBER_ARG
 #undef BOOST_FIBER_MAX_ARITY
@@ -285,18 +241,8 @@
 using fibers::fiber;
 
 inline
-void swap( fiber & lhs, fiber & rhs)
-{ return lhs.swap( rhs); }
-
-#ifdef BOOST_HAS_RVALUE_REFS
-inline
-fiber && move( fiber && f)
-{ return f; }
-#else
-inline
-fiber move( boost::detail::thread_move_t< fiber > f)
-{ return fiber( f); }
-#endif
+void swap( fiber & l, fiber & r)
+{ return l.swap( r); }
 
 }
 
Modified: sandbox/fiber/boost/fiber/scheduler.hpp
==============================================================================
--- sandbox/fiber/boost/fiber/scheduler.hpp	(original)
+++ sandbox/fiber/boost/fiber/scheduler.hpp	2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
@@ -12,6 +12,7 @@
 
 #include <boost/preprocessor/repetition.hpp>
 #include <boost/intrusive_ptr.hpp>
+#include <boost/move/move.hpp>
 #include <boost/utility.hpp>
 
 #include <boost/fiber/detail/config.hpp>
@@ -78,9 +79,17 @@
         { strategy_->add( fiber( fn) ); }
 
         template< typename Fn >
+	void make_fiber( BOOST_RV_REF( Fn) fn)
+	{ strategy_->add( fiber( fn) ); }
+
+	template< typename Fn >
         void make_fiber( std::size_t stack_size, Fn fn)
         { strategy_->add( fiber( stack_size, fn) ); }
 
+	template< typename Fn >
+	void make_fiber( std::size_t stack_size, BOOST_RV_REF( Fn) fn)
+	{ strategy_->add( fiber( stack_size, fn) ); }
+
         void migrate_fiber( fiber f)
         {
                 if ( ! f) throw fiber_moved();
Modified: sandbox/fiber/boost/fiber/spin/future.hpp
==============================================================================
--- sandbox/fiber/boost/fiber/spin/future.hpp	(original)
+++ sandbox/fiber/boost/fiber/spin/future.hpp	2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
@@ -16,11 +16,11 @@
 #include <boost/config.hpp>
 #include <boost/exception_ptr.hpp>
 #include <boost/function.hpp>
+#include <boost/move/move.hpp>
 #include <boost/next_prior.hpp>
 #include <boost/ref.hpp>
 #include <boost/scoped_array.hpp>
 #include <boost/shared_ptr.hpp>
-#include <boost/thread/detail/move.hpp>
 #include <boost/utility/enable_if.hpp>
 
 #include <boost/fiber/detail/future_traits.hpp>
@@ -473,10 +473,9 @@
 template <typename R>
 class unique_future
 {
-    unique_future(unique_future & rhs);// = delete;
-    unique_future& operator=(unique_future& rhs);// = delete;
-
     typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
+
+	BOOST_MOVABLE_BUT_NOT_COPYABLE( unique_future);
     
     future_ptr future;
 
@@ -500,37 +499,19 @@
     ~unique_future()
     {}
 
-#ifdef BOOST_HAS_RVALUE_REFS
-	unique_future(unique_future && other)
-	{
-	    future.swap(other.future);
-	}
-	unique_future& operator=(unique_future && other)
+	unique_future( BOOST_RV_REF( unique_future) other):
+	    future(other.future)
         {
-	    future=other.future;
             other.future.reset();
-	    return *this;
-	}
-#else
-	unique_future(boost::detail::thread_move_t<unique_future> other):
-	    future(other->future)
-	{
-	    other->future.reset();
         }
         
-	unique_future& operator=(boost::detail::thread_move_t<unique_future> other)
+	unique_future& operator=( BOOST_RV_REF( unique_future) other)
         {
-	    future=other->future;
-	    other->future.reset();
+	    future=other.future;
+	    other.future.reset();
             return *this;
         }
         
-	operator boost::detail::thread_move_t<unique_future>()
-	{
-	    return boost::detail::thread_move_t<unique_future>(*this);
-	}
-#endif
-
         void swap(unique_future& other)
         {
             future.swap(other.future);
@@ -587,12 +568,11 @@
 class shared_future
 {
     typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
+
+	BOOST_COPYABLE_AND_MOVABLE( shared_future);
     
     future_ptr future;
 
-//         shared_future(const unique_future<R>& other);
-//         shared_future& operator=(const unique_future<R>& other);
-
         friend class detail::future_waiter;
         friend class promise<R>;
         friend class packaged_task<R>;
@@ -614,64 +594,35 @@
         ~shared_future()
         {}
         
-	shared_future& operator=(shared_future const& other)
+	shared_future& operator=( BOOST_COPY_ASSIGN_REF( shared_future) other)
         {
             future=other.future;
             return *this;
         }
-#ifdef BOOST_HAS_RVALUE_REFS
-	shared_future(shared_future && other)
+
+	shared_future( BOOST_RV_REF( shared_future) other):
+	    future(other.future)
         {
-	    future.swap(other.future);
+	    other->future.reset();
         }
-	shared_future(unique_future<R> && other)
+	shared_future( BOOST_RV_REF( unique_future<R>) other):
+	    future(other.future)
         {
-	    future.swap(other.future);
+	    other.future.reset();
         }
-	shared_future& operator=(shared_future && other)
+	shared_future& operator=(BOOST_RV_REF( shared_future) other)
         {
             future.swap(other.future);
             other.future.reset();
             return *this;
         }
-	shared_future& operator=(unique_future<R> && other)
+	shared_future& operator=( BOOST_RV_REF( unique_future<R>) other)
         {
             future.swap(other.future);
             other.future.reset();
             return *this;
         }
-#else            
-	shared_future(boost::detail::thread_move_t<shared_future> other):
-	    future(other->future)
-	{
-	    other->future.reset();
-	}
-//         shared_future(const unique_future<R> &) = delete;
-	shared_future(boost::detail::thread_move_t<unique_future<R> > other):
-	    future(other->future)
-	{
-	    other->future.reset();
-	}
-	shared_future& operator=(boost::detail::thread_move_t<shared_future> other)
-	{
-	    future.swap(other->future);
-	    other->future.reset();
-	    return *this;
-	}
-	shared_future& operator=(boost::detail::thread_move_t<unique_future<R> > other)
-	{
-	    future.swap(other->future);
-	    other->future.reset();
-	    return *this;
-	}
         
-	operator boost::detail::thread_move_t<shared_future>()
-	{
-	    return boost::detail::thread_move_t<shared_future>(*this);
-	}
-	
-#endif
-
         void swap(shared_future& other)
         {
             future.swap(other.future);
@@ -728,13 +679,12 @@
 class promise
 {
     typedef boost::shared_ptr<detail::future_object<R> > future_ptr;
+
+	BOOST_MOVABLE_BUT_NOT_COPYABLE( promise);
     
     future_ptr future;
     bool future_obtained;
     
-    promise(promise & rhs);// = delete;
-    promise & operator=(promise & rhs);// = delete;
-
     void lazy_init()
     {
         if(!future)
@@ -764,39 +714,18 @@
             }
         }
         
-	// Assignment
-#ifdef BOOST_HAS_RVALUE_REFS
-	promise(promise && rhs):
-	    future_obtained(rhs.future_obtained)
+	promise( BOOST_RV_REF( promise) rhs):
+	    future(rhs.future),future_obtained(rhs.future_obtained)
         {
-	    future.swap(rhs.future);
+	    rhs.future.reset();
         }
-	promise & operator=(promise&& rhs)
+	promise & operator=( BOOST_RV_REF( promise) rhs)
         {
-	    future.swap(rhs.future);
+	    future=rhs.future;
             future_obtained=rhs.future_obtained;
             rhs.future.reset();
             return *this;
         }
-#else
-	promise(boost::detail::thread_move_t<promise> rhs):
-	    future(rhs->future),future_obtained(rhs->future_obtained)
-	{
-	    rhs->future.reset();
-	}
-	promise & operator=(boost::detail::thread_move_t<promise> rhs)
-	{
-	    future=rhs->future;
-	    future_obtained=rhs->future_obtained;
-	    rhs->future.reset();
-	    return *this;
-	}
-	
-	operator boost::detail::thread_move_t<promise>()
-	{
-	    return boost::detail::thread_move_t<promise>(*this);
-	}
-#endif   
         
         void swap(promise& other)
         {
@@ -863,13 +792,12 @@
 class promise<void>
 {
     typedef boost::shared_ptr<detail::future_object<void> > future_ptr;
+
+	BOOST_MOVABLE_BUT_NOT_COPYABLE( promise);
     
     future_ptr future;
     bool future_obtained;
     
-    promise(promise & rhs);// = delete;
-    promise & operator=(promise & rhs);// = delete;
-
     void lazy_init()
     {
         if(!future)
@@ -879,8 +807,6 @@
         }
     }
 public:
-//         template <class Allocator> explicit promise(Allocator a);
-
         promise():
             future(),future_obtained(false)
         {}
@@ -898,39 +824,18 @@
             }
         }
         
-	// Assignment
-#ifdef BOOST_HAS_RVALUE_REFS
-	promise(promise && rhs):
-	    future_obtained(rhs.future_obtained)
+	promise( BOOST_RV_REF( promise) rhs):
+	    future(rhs.future),future_obtained(rhs.future_obtained)
         {
-	    future.swap(rhs.future);
+	    rhs.future.reset();
         }
-	promise & operator=(promise&& rhs)
+	promise & operator=( BOOST_RV_REF( promise) rhs)
         {
-	    future.swap(rhs.future);
+	    future=rhs.future;
             future_obtained=rhs.future_obtained;
             rhs.future.reset();
             return *this;
         }
-#else
-	promise(boost::detail::thread_move_t<promise> rhs):
-	    future(rhs->future),future_obtained(rhs->future_obtained)
-	{
-	    rhs->future.reset();
-	}
-	promise & operator=(boost::detail::thread_move_t<promise> rhs)
-	{
-	    future=rhs->future;
-	    future_obtained=rhs->future_obtained;
-	    rhs->future.reset();
-	    return *this;
-	}
-	
-	operator boost::detail::thread_move_t<promise>()
-	{
-	    return boost::detail::thread_move_t<promise>(*this);
-	}
-#endif
         
         void swap(promise& other)
         {
@@ -1029,7 +934,7 @@
     task_object(F const& f_):
         f(f_)
     {}
-    task_object(boost::detail::thread_move_t<F> f_):
+    task_object( BOOST_RV_REF( F) f_):
         f(f_)
     {}
     
@@ -1054,7 +959,7 @@
     task_object(F const& f_):
         f(f_)
     {}
-    task_object(boost::detail::thread_move_t<F> f_):
+    task_object( BOOST_RV_REF( F) f_):
         f(f_)
     {}
     
@@ -1078,11 +983,10 @@
 template<typename R>
 class packaged_task
 {
+	BOOST_MOVABLE_BUT_NOT_COPYABLE( packaged_task);
+
     boost::shared_ptr<detail::task_base<R> > task;
     bool future_obtained;
-
-    packaged_task(packaged_task&);// = delete;
-    packaged_task& operator=(packaged_task&);// = delete;
     
 public:
     packaged_task():
@@ -1099,7 +1003,7 @@
     {}
     
     template <class F>
-    explicit packaged_task(boost::detail::thread_move_t<F> f):
+    explicit packaged_task( BOOST_RV_REF( F) f):
         task(new detail::task_object<R,F>(f)),future_obtained(false)
     {}
 
@@ -1117,38 +1021,18 @@
             }
         }
 
-        // assignment
-#ifdef BOOST_HAS_RVALUE_REFS
-	packaged_task(packaged_task&& other):
+	packaged_task( BOOST_RV_REF( packaged_task) other):
             future_obtained(other.future_obtained)
         {
             task.swap(other.task);
             other.future_obtained=false;
         }
-	packaged_task& operator=(packaged_task&& other)
-	{
-	    packaged_task temp(static_cast<packaged_task&&>(other));
-	    swap(temp);
-	    return *this;
-	}
-#else
-	packaged_task(boost::detail::thread_move_t<packaged_task> other):
-	    future_obtained(other->future_obtained)
-	{
-	    task.swap(other->task);
-	    other->future_obtained=false;
-	}
-	packaged_task& operator=(boost::detail::thread_move_t<packaged_task> other)
+	packaged_task& operator=( BOOST_RV_REF( packaged_task) other)
         {
             packaged_task temp(other);
             swap(temp);
             return *this;
         }
-	operator boost::detail::thread_move_t<packaged_task>()
-	{
-	    return boost::detail::thread_move_t<packaged_task>(*this);
-	}
-#endif
         
         void swap(packaged_task& other)
         {
Modified: sandbox/fiber/change.log
==============================================================================
--- sandbox/fiber/change.log	(original)
+++ sandbox/fiber/change.log	2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
@@ -1,8 +1,13 @@
+0.3.2:
+------
+- default stacksize = 64kB because of seg fault if value is too small
+- using boost.move library for move support
+
 0.3.1:
 ------
 - scheduler< Strategy >::migrate_fiber() overloaded - passing only fiber to be migrated
-- default stacksize set to 8kB
-- documetnation updated
+- documentation updated
+- default stacksize = 8kB
 
 0.3.0:
 ------
Modified: sandbox/fiber/libs/fiber/src/fiber.cpp
==============================================================================
--- sandbox/fiber/libs/fiber/src/fiber.cpp	(original)
+++ sandbox/fiber/libs/fiber/src/fiber.cpp	2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
@@ -18,15 +18,6 @@
 namespace boost {
 namespace fibers {
 
-#ifdef BOOST_HAS_RVALUE_REFS
-detail::info_base::ptr_t
-fiber::make_info_( std::size_t stack_size, void ( * fn)() )
-{
-	return detail::info_base::ptr_t(
-		new detail::info< void( *)() >( fn, stack_size) );
-}
-#endif
-
 fiber::fiber() :
         info_base_()
 {}
@@ -35,47 +26,32 @@
         info_base_( info_base)
 {}
 
-#ifdef BOOST_HAS_RVALUE_REFS
-fiber::fiber( fiber && other)
-{ info_base_.swap( other.info_base_); }
+fiber::fiber( fiber const& other) :
+	info_base_( other.info_base_)
+{}
 
 fiber &
-fiber::operator=( fiber && other)
+fiber::operator=( BOOST_COPY_ASSIGN_REF( fiber) other)
 {
+	if ( this == & other) return * this;
         info_base_ = other.info_base_;
-	other.info_base_.reset();
         return * this;
 }
 
-fiber &&
-fiber::move()
-{ return static_cast< fiber && >( * this); }
-#else
-fiber::fiber( boost::detail::thread_move_t< fiber > f)
+fiber::fiber( BOOST_RV_REF( fiber) other)
 {
-	info_base_ = f->info_base_;
-	f->info_base_.reset();
+	info_base_ = other.info_base_;
+	other.info_base_.reset();
 }
 
 fiber &
-fiber::operator=( boost::detail::thread_move_t< fiber > f)
+fiber::operator=( BOOST_RV_REF( fiber) other)
 {
-	fiber new_fiber( f);
-	swap( new_fiber);
+	fiber tmp( other);
+	swap( tmp);
         return * this;
 }
 
-fiber::operator boost::detail::thread_move_t< fiber >()
-{ return move(); }
-
-boost::detail::thread_move_t< fiber >
-fiber::move()
-{
-	boost::detail::thread_move_t< fiber > f( * this);
-	return f;
-}
-#endif
-
 detail::info_base::ptr_t
 fiber::info_() const
 { return info_base_; }
Modified: sandbox/fiber/libs/fiber/test/test_spin_future.cpp
==============================================================================
--- sandbox/fiber/libs/fiber/test/test_spin_future.cpp	(original)
+++ sandbox/fiber/libs/fiber/test/test_spin_future.cpp	2009-12-20 15:48:12 EST (Sun, 20 Dec 2009)
@@ -9,28 +9,21 @@
 #include <memory>
 #include <string>
 
+#include <boost/move/move.hpp>
 #include <boost/test/unit_test.hpp>
 
-#ifdef BOOST_HAS_RVALUE_REFS
-    template<typename T>
-    typename boost::remove_reference<T>::type&& cast_to_rval(T&& t)
-    {
-        return t;
-    }
-#else
-    template<typename T>
-    boost::detail::thread_move_t<T> cast_to_rval(T& t)
-    {
-        return boost::move(t);
-    }
-#endif
+template<typename T>
+BOOST_RV_REF( T) cast_to_rval(T& t)
+{
+    return boost::move(t);
+}
 
 struct X
 {
 private:
     
-    X(X& other);
-    
+   BOOST_MOVABLE_BUT_NOT_COPYABLE(X);
+
 public:
     
     int i;
@@ -38,23 +31,11 @@
     X():
         i(42)
     {}
-#ifdef BOOST_HAS_RVALUE_REFS
-    X(X&& other):
+    X( BOOST_RV_REF( X) other):
         i(other.i)
     {
         other.i=0;
     }
-#else
-    X(boost::detail::thread_move_t<X> other):
-        i(other->i)
-    {
-        other->i=0;
-    }
-    operator boost::detail::thread_move_t<X>()
-    {
-        return boost::detail::thread_move_t<X>(*this);
-    }
-#endif
     ~X()
     {}
 };