$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r64650 - in sandbox/statistics/support/boost/assign/v2: put/modifier put/range put/wrapper ref/detail/convert_traits ref/detail/unwrap
From: erwann.rogard_at_[hidden]
Date: 2010-08-06 22:43:47
Author: e_r
Date: 2010-08-06 22:43:45 EDT (Fri, 06 Aug 2010)
New Revision: 64650
URL: http://svn.boost.org/trac/boost/changeset/64650
Log:
misc workaround for Ubuntu GCC 4.4
Text files modified: 
   sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp                |     4 +-                                      
   sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp                  |     2                                         
   sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp                   |     8 +++---                                  
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp |    41 +++++++++++++++++++++++++++------------ 
   sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp   |     1                                         
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp         |     2                                         
   sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp        |     2                                         
   7 files changed, 38 insertions(+), 22 deletions(-)
Modified: sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/modifier/deduce.hpp	2010-08-06 22:43:45 EDT (Fri, 06 Aug 2010)
@@ -46,13 +46,13 @@
     template<>
     struct case_<switch_tag::deduce_put,2> :
         v2::mpl::wrap<
-        	put_tag::push,
+        	v2::put_tag::push,
             container_type_traits::has_push_deduced_value
         >{};
 
     template<>
     struct case_<switch_tag::deduce_put,3> : 
-        v2::mpl::wrap<put_tag::push_back>{};
+        v2::mpl::wrap<v2::put_tag::push_back>{};
 
 }// mpl
 namespace put_aux{
Modified: sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/range/convert.hpp	2010-08-06 22:43:45 EDT (Fri, 06 Aug 2010)
@@ -26,7 +26,7 @@
         To operator|(From& from, convert_aux::adaptor<To> const& dummy)
     {
             To to;
-    	return to | adaptor::put_range( from );
+    	return to | v2::adaptor::put_range( from );
     }
 
 }// convert_aux
Modified: sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/put/wrapper/crtp.hpp	2010-08-06 22:43:45 EDT (Fri, 06 Aug 2010)
@@ -164,12 +164,12 @@
         
                 struct incr_lookup : Traits::template new_fun_tag<
                     functor_aux::identity,
-                put_tag::incr_lookup
+                v2::put_tag::incr_lookup
             >{};
 
                         struct repeat
             {
-    			typedef put_tag::repeat<Tag> new_tag_;
+    			typedef v2::put_tag::repeat<Tag> new_tag_;
                         typedef put_aux::modifier<new_tag_> modifier_;
                                 typedef typename Traits::template new_tag<new_tag_>::type type;
             };
@@ -207,7 +207,7 @@
         modulo_incr_lookup()const{
                     return (*this) 
                     % ( _fun = _identity ) 
-                % ( _put_tag = put_tag::incr_lookup() );
+                % ( _put_tag = v2::put_tag::incr_lookup() );
                 }
 
                 template<typename N>
@@ -217,7 +217,7 @@
                 typedef typename result_of_modulo::repeat traits_;
             typedef typename traits_::modifier_ modifier_;
                     return (
-            	(*this) %  ( _put_tag = put_tag::repeat<Tag>() )
+            	(*this) %  ( _put_tag = v2::put_tag::repeat<Tag>() )
             ).copy_modifier( modifier_( n ) );
                 }
 
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/checking.hpp	2010-08-06 22:43:45 EDT (Fri, 06 Aug 2010)
@@ -12,6 +12,7 @@
 #include <boost/mpl/apply.hpp>
 #include <boost/mpl/not.hpp>
 #include <boost/config.hpp>
+#include <boost/static_assert.hpp>
 #include <boost/utility/enable_if.hpp>
 #include <boost/type_traits/promote.hpp>
 #include <boost/type_traits/is_same.hpp>
@@ -73,11 +74,11 @@
     void do_check_impl(const T1&, const T2& ,const T3&) 
     {
         
-        typedef typename boost::mpl::not_<
-           boost::is_same<T1,T2> 
-        >::type not_same_;
-        
-        BOOST_STATIC_ASSERT(not_same_::value);
+        // Disable for Ubuntu 9.1 - GCC 4.4 (see workaround below).
+        // typedef typename boost::mpl::not_<
+        //   boost::is_same<T1,T2> 
+        // >::type not_same_;
+        // BOOST_STATIC_ASSERT(not_same_::value);
         
         tester<const T1&, const T2&, const T3 >::test(); 
         tester<const T1&,       T2&, const T3 >::test(); 
@@ -102,7 +103,7 @@
     };
 
 
-#define m(T1,T2)															\
+#define m(T1, T2, T3)													    \
     template<typename T>													\
     void do_check(															\
             typename boost::enable_if<											\
@@ -110,16 +111,30 @@
         >::type* = 0														\
     ) 																		\
     {																		\
-        typedef T1 t1_;														\
-        typedef T2 t2_;														\
-        distinct_values::arithmetic::do_check_impl( t1_(), t2_(), t2_() );	\
+        distinct_values::arithmetic::do_check_impl( T1(), T2(), T3() );	    \
     }																		\
 /**/
 
-m(short  , int)
-m(int    , long)
-m(float  , double)
-m(double , long double)
+// Works for Max OSX 10.6 GCC 4.2 but not Ubuntu 9.1 GCC 4.4
+// 	m(short  , long,	int)
+// 	m(int    , long,	long)
+//	m(float  , double,	double)
+//  typedef long double long_double_;
+//	m(double , long_double_, long double)
+
+namespace workaround{
+	typedef boost::numeric::conversion_traits<short, int>::supertype a_;
+	typedef boost::numeric::conversion_traits<int, long>::supertype b_;
+	typedef boost::numeric::conversion_traits<float, double>::supertype c_;
+	typedef boost::numeric::conversion_traits<
+    	double,long double>::supertype d_;
+}// workaround
+
+m(short  , int, 	workaround::a_)
+m(int    , long,	workaround::b_)
+m(float  , double,	workaround::c_)
+typedef long double long_double_;
+m(double , long_double_, workaround::d_)
 
 #undef m
 }// arithmetic
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/convert_traits/result.hpp	2010-08-06 22:43:45 EDT (Fri, 06 Aug 2010)
@@ -12,6 +12,7 @@
 #include <boost/config.hpp>
 #include <boost/mpl/and.hpp>
 #include <boost/mpl/or.hpp>
+#include <boost/static_assert.hpp>
 #include <boost/type_traits/is_same.hpp>
 #include <boost/type_traits/is_const.hpp>
 #include <boost/type_traits/is_reference.hpp>
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/iterator.hpp	2010-08-06 22:43:45 EDT (Fri, 06 Aug 2010)
@@ -63,7 +63,7 @@
         {
             typedef typename boost::iterator_reference<I>::type ref_;
             typedef typename boost::is_convertible<ref_,R>::type is_convertible_;
-            BOOST_MPL_ASSERT(is_convertible_);
+            BOOST_MPL_ASSERT(( is_convertible_ ));
         }
     };
               
Modified: sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp
==============================================================================
--- sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp	(original)
+++ sandbox/statistics/support/boost/assign/v2/ref/detail/unwrap/reference.hpp	2010-08-06 22:43:45 EDT (Fri, 06 Aug 2010)
@@ -39,7 +39,7 @@
     >{
         static void test()
         {
-            BOOST_MPL_ASSERT_NOT( boost::is_reference<T> );
+            BOOST_MPL_ASSERT_NOT(( boost::is_reference<T> ));
         };
     };