$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r72179 - in trunk/boost/icl: . concept type_traits
From: afojgo_at_[hidden]
Date: 2011-05-26 07:55:03
Author: jofaber
Date: 2011-05-26 07:55:01 EDT (Thu, 26 May 2011)
New Revision: 72179
URL: http://svn.boost.org/trac/boost/changeset/72179
Log:
Bug fix for ticket 5559: Assertion for numeric_minimum failed for std::greater ordering. Adjustments for portability.
Text files modified: 
   trunk/boost/icl/concept/interval.hpp        |    16 ++++++++--------                        
   trunk/boost/icl/concept/interval_bounds.hpp |     6 ------                                  
   trunk/boost/icl/left_open_interval.hpp      |     3 ++-                                     
   trunk/boost/icl/open_interval.hpp           |     3 ++-                                     
   trunk/boost/icl/type_traits/is_numeric.hpp  |     2 --                                      
   5 files changed, 12 insertions(+), 18 deletions(-)
Modified: trunk/boost/icl/concept/interval.hpp
==============================================================================
--- trunk/boost/icl/concept/interval.hpp	(original)
+++ trunk/boost/icl/concept/interval.hpp	2011-05-26 07:55:01 EDT (Thu, 26 May 2011)
@@ -110,7 +110,7 @@
     typedef typename interval_traits<Type>::domain_type    domain_type;
     typedef typename interval_traits<Type>::domain_compare domain_compare;
     BOOST_ASSERT((numeric_minimum<domain_type, domain_compare, is_numeric<domain_type>::value>
-		                         ::is_less_than(value) )); 
+                                 ::is_less_than(value) )); 
 
     return interval_traits<Type>::construct(domain_prior<Type>(value), value);
 }
@@ -123,7 +123,7 @@
     typedef typename interval_traits<Type>::domain_type    domain_type;
     typedef typename interval_traits<Type>::domain_compare domain_compare;
     BOOST_ASSERT((numeric_minimum<domain_type, domain_compare, is_numeric<domain_type>::value>
-		                         ::is_less_than(value))); 
+                                 ::is_less_than(value))); 
 
     return interval_traits<Type>::construct( domain_prior<Type>(value)
                                            , domain_next<Type>(value));
@@ -179,7 +179,7 @@
     typedef typename interval_traits<Type>::domain_type    domain_type;
     typedef typename interval_traits<Type>::domain_compare domain_compare;
     BOOST_ASSERT((numeric_minimum<domain_type, domain_compare, is_numeric<domain_type>::value>
-		                         ::is_less_than(value) )); 
+                                 ::is_less_than(value) )); 
 
     return interval_traits<Type>::construct(domain_prior<Type>(value), value);
 }
@@ -196,7 +196,7 @@
     typedef typename interval_traits<Type>::domain_type    domain_type;
     typedef typename interval_traits<Type>::domain_compare domain_compare;
     BOOST_ASSERT((numeric_minimum<domain_type, domain_compare, is_numeric<domain_type>::value>
-		                         ::is_less_than(value))); 
+                                 ::is_less_than(value))); 
 
     return interval_traits<Type>::construct( domain_prior<Type>(value)
                                            ,  domain_next<Type>(value));
@@ -292,13 +292,13 @@
     if(interval_traits<Type>::domain_compare()(left,right))
     {
         BOOST_ASSERT((numeric_minimum<domain_type, domain_compare, is_numeric<domain_type>::value>
-			                         ::is_less_than(left) )); 
+                                     ::is_less_than(left) )); 
         return construct<Type>(domain_prior<Type>(left), right);
     }
     else
     {
         BOOST_ASSERT((numeric_minimum<domain_type, domain_compare, is_numeric<domain_type>::value>
-			                         ::is_less_than(right) )); 
+                                     ::is_less_than(right) )); 
         return construct<Type>(domain_prior<Type>(right), left);
     }
 }
@@ -324,14 +324,14 @@
     if(interval_traits<Type>::domain_compare()(left,right))
     {
         BOOST_ASSERT((numeric_minimum<domain_type, domain_compare, is_numeric<domain_type>::value>
-			                         ::is_less_than(left) )); 
+                                     ::is_less_than(left) )); 
         return construct<Type>( domain_prior<Type>(left)
                               ,  domain_next<Type>(right));
     }
     else
     {
         BOOST_ASSERT((numeric_minimum<domain_type, domain_compare, is_numeric<domain_type>::value>
-			                         ::is_less_than(right) )); 
+                                     ::is_less_than(right) )); 
         return construct<Type>( domain_prior<Type>(right)
                               ,  domain_next<Type>(left));
     }
Modified: trunk/boost/icl/concept/interval_bounds.hpp
==============================================================================
--- trunk/boost/icl/concept/interval_bounds.hpp	(original)
+++ trunk/boost/icl/concept/interval_bounds.hpp	2011-05-26 07:55:01 EDT (Thu, 26 May 2011)
@@ -85,10 +85,7 @@
 shift_lower(interval_bounds decl, interval_bounds repr, const Type& low)
 {
     if(is_left_closed(decl) && !is_left_closed(repr))
-    {
-        BOOST_ASSERT((numeric_minimum<Type, is_numeric<Type>::value >::is_less_than(low) )); 
         return icl::pred(low);
-    }
     else if(!is_left_closed(decl) && is_left_closed(repr)) 
         return icl::succ(low);
     else 
@@ -100,10 +97,7 @@
 shift_upper(interval_bounds decl, interval_bounds repr, const Type& up)
 {
     if(!is_right_closed(decl) && is_right_closed(repr))
-    {
-        BOOST_ASSERT((numeric_minimum<Type, is_numeric<Type>::value >::is_less_than(up) )); 
         return icl::pred(up);
-    }
     else if(is_right_closed(decl) && !is_right_closed(repr)) 
         return icl::succ(up);
     else 
Modified: trunk/boost/icl/left_open_interval.hpp
==============================================================================
--- trunk/boost/icl/left_open_interval.hpp	(original)
+++ trunk/boost/icl/left_open_interval.hpp	2011-05-26 07:55:01 EDT (Thu, 26 May 2011)
@@ -49,7 +49,8 @@
         // Only for discrete types this ctor creates an interval containing 
         // a single element only.
         BOOST_STATIC_ASSERT((icl::is_discrete<DomainT>::value));
-        BOOST_ASSERT((numeric_minimum<DomainT, is_numeric<DomainT>::value >::is_less_than(val) )); 
+        BOOST_ASSERT((numeric_minimum<DomainT, domain_compare, is_numeric<DomainT>::value >
+                                     ::is_less_than(val) )); 
     }
 
     /** Interval from <tt>low</tt> to <tt>up</tt> with bounds <tt>bounds</tt> */
Modified: trunk/boost/icl/open_interval.hpp
==============================================================================
--- trunk/boost/icl/open_interval.hpp	(original)
+++ trunk/boost/icl/open_interval.hpp	2011-05-26 07:55:01 EDT (Thu, 26 May 2011)
@@ -48,7 +48,8 @@
         // Only for discrete types this ctor creates an interval containing 
         // a single element only.
         BOOST_STATIC_ASSERT((icl::is_discrete<DomainT>::value));
-        BOOST_ASSERT((numeric_minimum<DomainT, is_numeric<DomainT>::value >::is_less_than(val) )); 
+        BOOST_ASSERT((numeric_minimum<DomainT, domain_compare, is_numeric<DomainT>::value >
+                                     ::is_less_than(val) )); 
     }
 
     /** Interval from <tt>low</tt> to <tt>up</tt> with bounds <tt>bounds</tt> */
Modified: trunk/boost/icl/type_traits/is_numeric.hpp
==============================================================================
--- trunk/boost/icl/type_traits/is_numeric.hpp	(original)
+++ trunk/boost/icl/type_traits/is_numeric.hpp	2011-05-26 07:55:01 EDT (Thu, 26 May 2011)
@@ -54,8 +54,6 @@
 };
 
 //--------------------------------------------------------------------------
-//CL template<class Type, class Compare, bool Enable = false> struct numeric_minimum;
-
 template<class Type, class Compare, bool Enable = false>
 struct numeric_minimum
 {