$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r77588 - in trunk: boost/thread/detail libs/thread/test libs/thread/test/threads/thread/constr
From: vicente.botet_at_[hidden]
Date: 2012-03-27 14:22:31
Author: viboes
Date: 2012-03-27 14:22:30 EDT (Tue, 27 Mar 2012)
New Revision: 77588
URL: http://svn.boost.org/trac/boost/changeset/77588
Log:
Thread: Added BOOST_EXPLICIT_MOVE
Text files modified: 
   trunk/boost/thread/detail/move.hpp                                |    10 ++++++++++                              
   trunk/libs/thread/test/test_shared_mutex_timed_locks_chrono.cpp   |     7 +++++++                                 
   trunk/libs/thread/test/threads/thread/constr/FrvalueArgs_pass.cpp |     8 +-------                                
   trunk/libs/thread/test/threads/thread/constr/Frvalue_pass.cpp     |    13 +++++--------                           
   trunk/libs/thread/test/threads/thread/constr/move_pass.cpp        |    14 +++++++++++---                          
   5 files changed, 34 insertions(+), 18 deletions(-)
Modified: trunk/boost/thread/detail/move.hpp
==============================================================================
--- trunk/boost/thread/detail/move.hpp	(original)
+++ trunk/boost/thread/detail/move.hpp	2012-03-27 14:22:30 EDT (Tue, 27 Mar 2012)
@@ -61,6 +61,16 @@
 
 }
 
+#if ! defined  BOOST_NO_RVALUE_REFERENCES
+//&& ! defined  BOOST_NO_DELETED_FUNCTIONS
+#define BOOST_EXPLICIT_MOVE(RVALUE) RVALUE
+#elif ! defined  BOOST_NO_RVALUE_REFERENCES && defined  BOOST_MSVC
+#define BOOST_EXPLICIT_MOVE(RVALUE) RVALUE
+#else
+#define BOOST_EXPLICIT_MOVE(RVALUE) RVALUE.move()
+#endif
+
+
 #include <boost/config/abi_suffix.hpp>
 
 #endif
Modified: trunk/libs/thread/test/test_shared_mutex_timed_locks_chrono.cpp
==============================================================================
--- trunk/libs/thread/test/test_shared_mutex_timed_locks_chrono.cpp	(original)
+++ trunk/libs/thread/test/test_shared_mutex_timed_locks_chrono.cpp	2012-03-27 14:22:30 EDT (Tue, 27 Mar 2012)
@@ -9,6 +9,8 @@
 #include "util.inl"
 #include "shared_mutex_locking_thread.hpp"
 
+#if defined BOOST_THREAD_USES_CHRONO
+
 #define CHECK_LOCKED_VALUE_EQUAL(mutex_name,value,expected_value)    \
     {                                                                \
         boost::mutex::scoped_lock lock(mutex_name);                  \
@@ -266,3 +268,8 @@
 
     return test;
 }
+
+#else
+#error "Test not applicable: BOOST_THREAD_USES_CHRONO not defined for this platform as not supported"
+#endif
+
Modified: trunk/libs/thread/test/threads/thread/constr/FrvalueArgs_pass.cpp
==============================================================================
--- trunk/libs/thread/test/threads/thread/constr/FrvalueArgs_pass.cpp	(original)
+++ trunk/libs/thread/test/threads/thread/constr/FrvalueArgs_pass.cpp	2012-03-27 14:22:30 EDT (Tue, 27 Mar 2012)
@@ -81,13 +81,7 @@
 int main()
 {
   {
-#if ! defined  BOOST_NO_RVALUE_REFERENCES && ! defined  BOOST_NO_DELETED_FUNCTIONS
-    boost::thread t = boost::thread(MoveOnly(), MoveOnly());
-#elif ! defined  BOOST_NO_RVALUE_REFERENCES && defined  BOOST_MSVC
-    boost::thread t = boost::thread(MoveOnly(), MoveOnly());
-#else
-    boost::thread t = boost::thread(MoveOnly().move(), MoveOnly().move());
-#endif
+    boost::thread t = boost::thread( BOOST_EXPLICIT_MOVE(MoveOnly()), BOOST_EXPLICIT_MOVE(MoveOnly()) );
     t.join();
   }
   return boost::report_errors();
Modified: trunk/libs/thread/test/threads/thread/constr/Frvalue_pass.cpp
==============================================================================
--- trunk/libs/thread/test/threads/thread/constr/Frvalue_pass.cpp	(original)
+++ trunk/libs/thread/test/threads/thread/constr/Frvalue_pass.cpp	2012-03-27 14:22:30 EDT (Tue, 27 Mar 2012)
@@ -76,17 +76,14 @@
   }
 };
 
+MoveOnly MakeMoveOnly() {
+  return MoveOnly();
+}
+
 int main()
 {
   {
-    // FIXME The following fails
-#if ! defined  BOOST_NO_RVALUE_REFERENCES && ! defined  BOOST_NO_DELETED_FUNCTIONS
-    boost::thread t = boost::thread( MoveOnly() );
-#elif ! defined  BOOST_NO_RVALUE_REFERENCES && defined  BOOST_MSVC
-    boost::thread t = boost::thread( MoveOnly() );
-#else
-    boost::thread t = boost::thread( MoveOnly().move() );
-#endif
+    boost::thread t(( BOOST_EXPLICIT_MOVE(MakeMoveOnly()) ));
     t.join();
   }
   return boost::report_errors();
Modified: trunk/libs/thread/test/threads/thread/constr/move_pass.cpp
==============================================================================
--- trunk/libs/thread/test/threads/thread/constr/move_pass.cpp	(original)
+++ trunk/libs/thread/test/threads/thread/constr/move_pass.cpp	2012-03-27 14:22:30 EDT (Tue, 27 Mar 2012)
@@ -65,6 +65,10 @@
 int G::n_alive = 0;
 bool G::op_run = false;
 
+boost::thread make_thread() {
+  return boost::thread(G(), 5, 5.5);
+}
+
 int main()
 {
   {
@@ -76,10 +80,14 @@
     BOOST_TEST(t1.get_id() == id);
     BOOST_TEST(t0.get_id() == boost::thread::id());
     t1.join();
-#if 0
-    BOOST_TEST(G::n_alive == 0);
-#endif
     BOOST_TEST(G::op_run);
   }
+  BOOST_TEST(G::n_alive == 0);
+  {
+    boost::thread t1((make_thread()));
+    t1.join();
+    BOOST_TEST(G::op_run);
+  }
+  BOOST_TEST(G::n_alive == 0);
   return boost::report_errors();
 }