$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r73169 - sandbox/conversion/boost/conversion/type_traits
From: vicente.botet_at_[hidden]
Date: 2011-07-17 06:54:06
Author: viboes
Date: 2011-07-17 06:54:05 EDT (Sun, 17 Jul 2011)
New Revision: 73169
URL: http://svn.boost.org/trac/boost/changeset/73169
Log:
conversion: fix is_move_xxx on compilers don't supporting rvalue references.
take care of unbound arrays
Text files modified: 
   sandbox/conversion/boost/conversion/type_traits/is_copy_assignable.hpp    |     2 ++                                      
   sandbox/conversion/boost/conversion/type_traits/is_copy_constructible.hpp |     4 ++--                                    
   sandbox/conversion/boost/conversion/type_traits/is_move_assignable.hpp    |    20 +++++++++++++++++++-                    
   sandbox/conversion/boost/conversion/type_traits/is_move_constructible.hpp |    21 ++++++++++++++++++---                   
   4 files changed, 41 insertions(+), 6 deletions(-)
Modified: sandbox/conversion/boost/conversion/type_traits/is_copy_assignable.hpp
==============================================================================
--- sandbox/conversion/boost/conversion/type_traits/is_copy_assignable.hpp	(original)
+++ sandbox/conversion/boost/conversion/type_traits/is_copy_assignable.hpp	2011-07-17 06:54:05 EDT (Sun, 17 Jul 2011)
@@ -44,6 +44,8 @@
    */
   template <typename T>
   struct is_copy_assignable<T&> : true_type {};
+  template <typename A>
+  struct is_copy_assignable<A[]> : false_type {};
   template <>
   struct is_copy_assignable<void> : false_type {};
 
Modified: sandbox/conversion/boost/conversion/type_traits/is_copy_constructible.hpp
==============================================================================
--- sandbox/conversion/boost/conversion/type_traits/is_copy_constructible.hpp	(original)
+++ sandbox/conversion/boost/conversion/type_traits/is_copy_constructible.hpp	2011-07-17 06:54:05 EDT (Sun, 17 Jul 2011)
@@ -43,8 +43,8 @@
   struct is_copy_constructible<void> : false_type {};
   template <typename T>
   struct is_copy_constructible<T&> : true_type {};
-//  template <typename T>
-//  struct is_copy_constructible<T[]> : false_type {};
+  template <typename T>
+  struct is_copy_constructible<T[]> : false_type {};
 //  template <typename T, std::size_t N>
 //  struct is_copy_constructible<T[N]> : false_type {};
 #endif
Modified: sandbox/conversion/boost/conversion/type_traits/is_move_assignable.hpp
==============================================================================
--- sandbox/conversion/boost/conversion/type_traits/is_move_assignable.hpp	(original)
+++ sandbox/conversion/boost/conversion/type_traits/is_move_assignable.hpp	2011-07-17 06:54:05 EDT (Sun, 17 Jul 2011)
@@ -21,6 +21,22 @@
 #include <boost/type_traits/remove_reference.hpp>
 #include <boost/type_traits/add_lvalue_reference.hpp>
 
+#if ! defined BOOST_NO_RVALUE_REFERENCES
+  #if defined _MSC_VER
+  #elif defined __clang__
+      #define BOOST_CONVERSION_TT_IS_MOVE_ASSIGNABLE_USES_RVALUE
+  #elif defined __GNUC__
+     #if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 )
+     #else
+      #define BOOST_CONVERSION_TT_IS_MOVE_ASSIGNABLE_USES_RVALUE
+     #endif
+  #else
+      #define BOOST_CONVERSION_TT_IS_MOVE_ASSIGNABLE_USES_RVALUE
+  #endif
+#else
+#endif
+
+
 namespace boost {
 
   /**
@@ -32,7 +48,7 @@
    */
   template <class T>
   struct is_move_assignable :
-#if ! defined BOOST_NO_RVALUE_REFERENCES
+#if defined BOOST_CONVERSION_TT_IS_MOVE_ASSIGNABLE_USES_RVALUE
     is_assignable<T&, T&&>
 #else
     is_copy_assignable<T>
@@ -48,6 +64,8 @@
    */
 //  template <typename T>
 //  struct is_move_assignable<T&> : true_type {};
+  template <typename A>
+  struct is_move_assignable<A[]> : false_type {};
   template <>
   struct is_move_assignable<void> : false_type {};
 
Modified: sandbox/conversion/boost/conversion/type_traits/is_move_constructible.hpp
==============================================================================
--- sandbox/conversion/boost/conversion/type_traits/is_move_constructible.hpp	(original)
+++ sandbox/conversion/boost/conversion/type_traits/is_move_constructible.hpp	2011-07-17 06:54:05 EDT (Sun, 17 Jul 2011)
@@ -22,6 +22,21 @@
 #include <boost/type_traits/add_rvalue_reference.hpp>
 #include <boost/type_traits/integral_constant.hpp>
 
+#if ! defined BOOST_NO_RVALUE_REFERENCES
+  #if defined _MSC_VER
+  #elif defined __clang__
+      #define BOOST_CONVERSION_TT_IS_MOVE_CONSTRUCTIBLE_USES_RVALUE
+  #elif defined __GNUC__
+     #if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 )
+     #else
+      #define BOOST_CONVERSION_TT_IS_MOVE_CONSTRUCTIBLE_USES_RVALUE
+     #endif
+  #else
+      #define BOOST_CONVERSION_TT_IS_MOVE_CONSTRUCTIBLE_USES_RVALUE
+  #endif
+#else
+#endif
+
 namespace boost {
 
   /**
@@ -33,7 +48,7 @@
    */
   template <class T>
   struct is_move_constructible :
-#if ! defined BOOST_NO_RVALUE_REFERENCES
+#if defined BOOST_CONVERSION_TT_IS_MOVE_CONSTRUCTIBLE_USES_RVALUE
     is_constructible<T, typename add_rvalue_reference<T>::type>
 #else
     is_copy_constructible<T>
@@ -45,8 +60,8 @@
   struct is_move_constructible<void> : false_type {};
 //  template <typename T>
 //  struct is_move_constructible<T&> : true_type {};
-//  template <typename T>
-//  struct is_move_constructible<T[]> : false_type {};
+  template <typename T>
+  struct is_move_constructible<T[]> : false_type {};
 //  template <typename T, std::size_t N>
 //  struct is_move_constructible<T[N]> : false_type {};
 #endif