Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r49766 - sandbox/itl/boost/itl
From: afojgo_at_[hidden]
Date: 2008-11-15 06:06:22


Author: jofaber
Date: 2008-11-15 06:06:21 EST (Sat, 15 Nov 2008)
New Revision: 49766
URL: http://svn.boost.org/trac/boost/changeset/49766

Log:
Refactored: Introduced a template template parameter Compare to itl::interval and passed
the Compare parameter from all interval containers to their interval types.
Replaced constructor function templates for open/closed intervals by static member functions.
2. Committing conflicted files after revert. Stable {msvc-9.0}
Text files modified:
   sandbox/itl/boost/itl/interval_base_map.hpp | 81 +++++++++++++++++++--------------------
   sandbox/itl/boost/itl/interval_base_set.hpp | 44 ++++++++++----------
   sandbox/itl/boost/itl/interval_map.hpp | 52 ++++++++++++------------
   sandbox/itl/boost/itl/interval_set.hpp | 31 +++++++-------
   sandbox/itl/boost/itl/split_interval_map.hpp | 40 +++++++++---------
   sandbox/itl/boost/itl/split_interval_set.hpp | 26 ++++++------
   6 files changed, 137 insertions(+), 137 deletions(-)

Modified: sandbox/itl/boost/itl/interval_base_map.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_base_map.hpp (original)
+++ sandbox/itl/boost/itl/interval_base_map.hpp 2008-11-15 06:06:21 EST (Sat, 15 Nov 2008)
@@ -135,8 +135,8 @@
     typename DomainT,
     typename CodomainT,
     class Traits = itl::neutron_absorber,
- template<class>class Interval = itl::interval,
- class Compare = std::less<DomainT>,
+ template<class, template<class>class>class Interval = itl::interval,
+ template<class>class Compare = std::less,
     template<class>class Alloc = std::allocator
>
 #ifdef USE_CONCEPTS
@@ -174,7 +174,7 @@
     /// Auxiliary type to help the compiler resolve ambiguities when using std::make_pair
     typedef base_pair<domain_type,codomain_type> base_pair_type;
     /// The interval type of the map
- typedef Interval<DomainT> interval_type;
+ typedef Interval<DomainT,Compare> interval_type;
 
     /// The difference type of an interval which is sometimes different form the domain_type
     typedef typename interval_type::difference_type difference_type;
@@ -183,7 +183,7 @@
     typedef typename interval_type::size_type size_type;
 
     /// Comparison functor for domain values
- typedef Compare domain_compare;
+ typedef Compare<DomainT> domain_compare;
     /// Comparison functor for intervals which are keys as well
     typedef exclusive_less<interval_type> interval_compare;
 
@@ -196,7 +196,7 @@
 
     /// Container type for the implementation
     typedef itl::map<interval_type,codomain_type,Traits,
- exclusive_less<interval_type>,Alloc> ImplMapT;
+ exclusive_less,Alloc> ImplMapT;
 
     /// key type of the implementing container
     typedef typename ImplMapT::key_type key_type;
@@ -289,11 +289,11 @@
 //@{
     /// Lower bound of the first interval
     DomainT lower()const
- { return empty()? Interval<DomainT>().lower() : (*(_map.begin())).KEY_VALUE.lower(); }
+ { return empty()? interval_type().lower() : (*(_map.begin())).KEY_VALUE.lower(); }
 
     /// Upper bound of the last interval
     DomainT upper()const
- { return empty()? Interval<DomainT>().upper() : (*(_map.rbegin())).KEY_VALUE.upper(); }
+ { return empty()? interval_type().upper() : (*(_map.rbegin())).KEY_VALUE.upper(); }
 
     /// Number of intervals which is also the size of the iteration over the map
     size_t interval_count()const { return _map.size(); }
@@ -623,8 +623,8 @@
     <
         template
         <
- class DomT, template<class>class Interv,
- class Comp, template<class>class Allc
+ class DomT, template<class DomT,template<class>class Comp>class Interv,
+ template<class>class Comp, template<class>class Allc
>
         class IntervalSet
>
@@ -652,8 +652,8 @@
         template
         <
             class DomT, class CodomT,
- class Trts, template<class>class Interv,
- class Comp, template<class>class Allc
+ class Trts, template<class DomT,template<class>class Comp>class Interv,
+ template<class>class Comp, template<class>class Allc
>
         class IntervalMap
>
@@ -712,8 +712,8 @@
     <
         template
         <
- class DomT, template<class>class Interv,
- class Comp, template<class>class Allc
+ class DomT, template<class DomT,template<class>class Comp>class Interv,
+ template<class>class Comp, template<class>class Allc
>
         class IntervalSet
>
@@ -854,7 +854,7 @@
 template
 <
     class SubType, class DomainT, class CodomainT, class Traits,
- template<class>class Interval, class Compare,
+ template<class, template<class>class>class Interval, template<class>class Compare,
     template<class>class Alloc
>
 typename interval_base_map<SubType,DomainT,CodomainT,Traits,
@@ -874,7 +874,7 @@
 template
 <
     class SubType, class DomainT, class CodomainT, class Traits,
- template<class>class Interval, class Compare,
+ template<class, template<class>class>class Interval, template<class>class Compare,
     template<class>class Alloc
>
 typename interval_base_map<SubType,DomainT,CodomainT,Traits,
@@ -894,7 +894,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 bool interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>::contained_in(const interval_base_map& super)const
 {
@@ -910,16 +910,16 @@
 <
     class SubType,
     class DomainT, class CodomainT,
- class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc
+ class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc
>
     template
     <
         template
         <
             class DomT, class CodomT,
- class Trts, template<class>class Interv,
- class Comp, template<class>class Allc
+ class Trts, template<class DomT,template<class>class Comp>class Interv,
+ template<class>class Comp, template<class>class Allc
>
         class IntervalMap
>
@@ -946,7 +946,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 void interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::add_intersection(interval_base_map& section,
@@ -981,7 +981,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 void interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::add_intersection(interval_base_map& section,
@@ -1008,7 +1008,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::join()
@@ -1057,7 +1057,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 std::string interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>::as_string()const
 {
@@ -1077,7 +1077,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 CodomainT interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>::sum()const
 {
@@ -1091,7 +1091,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 void interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>::uniformBounds( typename interval<DomainT>::bound_types bt)
 {
@@ -1103,7 +1103,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 void interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>::closeLeftBounds()
 {
@@ -1117,7 +1117,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 SubType& interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::erase(const interval_type& x_itv)
@@ -1155,7 +1155,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 SubType&
 interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>
@@ -1179,7 +1179,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 inline bool operator == (const interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& lhs,
                          const interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& rhs)
@@ -1195,7 +1195,7 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 inline bool is_protonic_equal(const interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& lhs,
                               const interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& rhs)
@@ -1216,22 +1216,21 @@
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 inline bool operator < (const interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& lhs,
                         const interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& rhs)
 {
     return std::lexicographical_compare(
         lhs.begin(), lhs.end(), rhs.begin(), rhs.end(),
- std::less<std::pair<Interval<DomainT>, CodomainT> >() //JODO URG
- );
- //NOTE DESIGN: case against class Compare parameter!
+ Compare<std::pair<Interval<DomainT,Compare>, CodomainT> >()
+ );
 }
 
 template
 <
     class SubType,
- class DomainT, class CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc
+ class DomainT, class CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc
>
 inline bool operator <= (const interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& lhs,
                         const interval_base_map<SubType,DomainT,CodomainT,Traits,Interval,Compare,Alloc>& rhs)
@@ -1246,8 +1245,8 @@
 <
     class SubType,
     class DomainT, class CodomainT,
- class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc
+ class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc
>
 interval_base_map<SubType,DomainT,CodomainT,
                   Traits,Interval,Compare,Alloc>&
@@ -1271,8 +1270,8 @@
 <
     class SubType,
     class DomainT, class CodomainT,
- class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc
+ class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc
>
 interval_base_map<SubType,DomainT,CodomainT,
                   Traits,Interval,Compare,Alloc>&
@@ -1296,7 +1295,7 @@
 
 template<class CharType, class CharTraits,
     class SubType, class DomainT, class CodomainT, class Traits,
- template<class>class Interval, class Compare,
+ template<class, template<class>class>class Interval, template<class>class Compare,
     template<class>class Alloc>
 std::basic_ostream<CharType, CharTraits>& operator <<
   (std::basic_ostream<CharType, CharTraits>& stream,

Modified: sandbox/itl/boost/itl/interval_base_set.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_base_set.hpp (original)
+++ sandbox/itl/boost/itl/interval_base_set.hpp 2008-11-15 06:06:21 EST (Sat, 15 Nov 2008)
@@ -102,8 +102,8 @@
 <
     typename SubType,
     typename DomainT,
- template<class>class Interval = itl::interval,
- class Compare = std::less<DomainT>,
+ template<class, template<class>class>class Interval = itl::interval,
+ template<class>class Compare = std::less,
     template<class>class Alloc = std::allocator
>
 #ifdef USE_CONCEPTS
@@ -125,7 +125,7 @@
     typedef DomainT codomain_type;
 
     /// The interval type of the set
- typedef Interval<DomainT> interval_type;
+ typedef Interval<DomainT,Compare> interval_type;
 
     /// The difference type of an interval which is sometimes different form the data_type
     typedef typename interval_type::difference_type difference_type;
@@ -135,7 +135,7 @@
 
 
     /// Comparison functor for domain values
- typedef Compare domain_compare;
+ typedef Compare<DomainT> domain_compare;
     /// Comparison functor for intervals
     typedef exclusive_less<interval_type> interval_compare;
 
@@ -155,7 +155,7 @@
     typedef typename itl::set<DomainT,Compare,Alloc> atomized_type;
 
     /// Container type for the implementation
- typedef typename itl::set<interval_type,exclusive_less<interval_type>,Alloc> ImplSetT;
+ typedef typename itl::set<interval_type,exclusive_less,Alloc> ImplSetT;
 
     /// key type of the implementing container
     typedef typename ImplSetT::key_type key_type;
@@ -222,10 +222,10 @@
 //@{
     /// lower bound of all intervals in the set
     DomainT lower()const
- { return empty()? Interval<DomainT>().lower() : (*(_set.begin())).lower(); }
+ { return empty()? interval_type().lower() : (*(_set.begin())).lower(); }
     /// upper bound of all intervals in the set
     DomainT upper()const
- { return empty()? Interval<DomainT>().upper() : (*(_set.rbegin())).upper(); }
+ { return empty()? interval_type().upper() : (*(_set.rbegin())).upper(); }
 
     iterator lower_bound(const value_type& interval)
     { return _set.lower_bound(interval); }
@@ -436,8 +436,8 @@
 
 template
 <
- class SubType, class DomainT, template<class>class Interval,
- class Compare, template<class>class Alloc
+ class SubType, class DomainT, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc
>
 typename interval_base_set<SubType,DomainT,Interval,Compare,Alloc>::size_type
 interval_base_set<SubType,DomainT,Interval,Compare,Alloc>::cardinality()const
@@ -467,8 +467,8 @@
 
 template
 <
- class SubType, class DomainT, template<class>class Interval,
- class Compare, template<class>class Alloc
+ class SubType, class DomainT, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc
>
 typename
     interval_base_set<SubType,DomainT,Interval,Compare,Alloc>::difference_type
@@ -483,8 +483,8 @@
 
 template
 <
- class SubType, class DomainT, template<class>class Interval,
- class Compare, template<class>class Alloc
+ class SubType, class DomainT, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc
>
 bool interval_base_set<SubType,DomainT,Interval,Compare,Alloc>
     ::contained_in(const interval_base_set& x2)const
@@ -510,7 +510,7 @@
 
 
 template<class SubType,
- class DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ class DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void interval_base_set<SubType,DomainT,Interval,Compare,Alloc>::add_intersection(interval_base_set& section, const value_type& x)const
 {
     // any intersection with the empty intervall is empty
@@ -530,7 +530,7 @@
 
 
 template<class SubType,
- class DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ class DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 interval_base_set<SubType,DomainT,Interval,Compare,Alloc>& interval_base_set<SubType,DomainT,Interval,Compare,Alloc>::join()
 {
     iterator it=_set.begin();
@@ -573,7 +573,7 @@
 
 
 template<class SubType,
- class DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ class DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void interval_base_set<SubType,DomainT,Interval,Compare,Alloc>::uniform_bounds(typename interval<DomainT>::bound_types bt)
 {
     // I can do this only, because I am shure that the contents and the
@@ -583,7 +583,7 @@
 
 
 template<class SubType,
- class DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ class DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 inline bool operator == (const interval_base_set<SubType,DomainT,Interval,Compare,Alloc>& lhs,
                          const interval_base_set<SubType,DomainT,Interval,Compare,Alloc>& rhs)
 {
@@ -596,16 +596,16 @@
 }
 
 template<class SubType,
- class DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ class DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 inline bool operator < (const interval_base_set<SubType,DomainT,Interval,Compare,Alloc>& lhs,
                         const interval_base_set<SubType,DomainT,Interval,Compare,Alloc>& rhs)
 {
     return std::lexicographical_compare(
- lhs.begin(), lhs.end(), rhs.begin(), rhs.end(), std::less<Interval<DomainT> >()); //JODO URG
+ lhs.begin(), lhs.end(), rhs.begin(), rhs.end(), Compare<Interval<DomainT,Compare> >());
 }
 
 template<class SubType,
- class DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ class DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 inline bool operator <= (const interval_base_set<SubType,DomainT,Interval,Compare,Alloc>& lhs,
                          const interval_base_set<SubType,DomainT,Interval,Compare,Alloc>& rhs)
 {
@@ -614,8 +614,8 @@
 
 
 template<class CharType, class CharTraits,
- class SubType, class DomainT, template<class>class Interval,
- class Compare, template<class>class Alloc>
+ class SubType, class DomainT, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc>
 std::basic_ostream<CharType, CharTraits>& operator <<
   (std::basic_ostream<CharType, CharTraits>& stream,
    const interval_base_set<SubType,DomainT,Interval,Compare,Alloc>& object)

Modified: sandbox/itl/boost/itl/interval_map.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_map.hpp (original)
+++ sandbox/itl/boost/itl/interval_map.hpp 2008-11-15 06:06:21 EST (Sat, 15 Nov 2008)
@@ -107,8 +107,8 @@
     typename DomainT,
     typename CodomainT,
     class Traits = itl::neutron_absorber,
- template<class>class Interval = itl::interval,
- class Compare = std::less<DomainT>,
+ template<class, template<class>class>class Interval = itl::interval,
+ template<class>class Compare = std::less,
     template<class>class Alloc = std::allocator
>
 class interval_map:
@@ -125,7 +125,7 @@
     typedef interval_map<DomainT,CodomainT,itl::neutron_absorber,Interval,Compare,Alloc>
             neutron_absorber_type;
 
- typedef Interval<DomainT> interval_type;
+ typedef Interval<DomainT,Compare> interval_type;
     typedef typename base_type::iterator iterator;
     typedef typename base_type::value_type value_type;
     typedef typename base_type::base_value_type base_value_type;
@@ -242,7 +242,7 @@
 } ;
 
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 bool interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::contains_(const value_type& interv_value)const
 {
@@ -256,7 +256,7 @@
 }
 
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>::getResiduals(const interval_type& x_itv, interval_type& leftResid, interval_type& rightResid)
 {
     iterator fst_it = this->_map.lower_bound(x_itv);
@@ -285,7 +285,7 @@
 
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 bool interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::joinable(const iterator& some, const iterator& next)const
 {
@@ -295,7 +295,7 @@
 }
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 typename interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>::iterator
     interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::joint_insert(iterator& left_it, const iterator& right_it)
@@ -325,7 +325,7 @@
 
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 bool interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::join_left(iterator& it)
 {
@@ -347,7 +347,7 @@
 }
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 bool interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::join_right(iterator& it)
 {
@@ -369,7 +369,7 @@
 
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 typename interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>::iterator
 interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::fill_join_left(const value_type& value)
@@ -388,7 +388,7 @@
 }
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 typename interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>::iterator
 interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::fill_join_both(const value_type& value)
@@ -408,7 +408,7 @@
 
 //-----------------------------------------------------------------------------
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 typename interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>::iterator
 interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
@@ -436,7 +436,7 @@
 }
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 typename interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>::iterator
 interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
@@ -467,7 +467,7 @@
 //-----------------------------------------------------------------------------
 // add<Combinator>(pair(interval,value)):
 //-----------------------------------------------------------------------------
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::add_(const value_type& x, const Combiner& combine)
@@ -566,7 +566,7 @@
     }
 }
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::add_rest(const interval_type& x_itv, const CodomainT& x_val, iterator& it, iterator& end_it, const Combiner& combine)
@@ -599,7 +599,7 @@
     add_rear(x_rest, x_val, it, combine);
 }
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::add_rear(const interval_type& x_rest, const CodomainT& x_val, iterator& it, const Combiner& combine)
@@ -641,7 +641,7 @@
 //-----------------------------------------------------------------------------
 // subtract<Combinator>(pair(interval,value)):
 //-----------------------------------------------------------------------------
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::subtract_(const value_type& x, const Combiner& combine)
@@ -710,7 +710,7 @@
 
 
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::subtract_rest(const interval_type& x_itv, const CodomainT& x_val, iterator& it, iterator& end_it, const Combiner& combine)
@@ -781,8 +781,8 @@
 //-----------------------------------------------------------------------------
 // insert(pair(interval,value)):
 //-----------------------------------------------------------------------------
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::insert_(const value_type& x)
 {
@@ -846,8 +846,8 @@
 }
 
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::insert_rest(const interval_type& x_itv, const CodomainT& x_val,
                   iterator& it, iterator& end_it)
@@ -874,8 +874,8 @@
     insert_rear(x_rest, x_val, it);
 }
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::insert_rear(const interval_type& x_rest, const CodomainT& x_val,
                   iterator& it)
@@ -905,7 +905,7 @@
 //-----------------------------------------------------------------------------
 // erase(pair(interval,value)):
 //-----------------------------------------------------------------------------
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::erase_(const value_type& x)
 {
@@ -964,7 +964,7 @@
 }
 
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::erase_rest(const interval_type& x_itv, const CodomainT& x_val,
                  iterator& it, iterator& end_it)

Modified: sandbox/itl/boost/itl/interval_set.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_set.hpp (original)
+++ sandbox/itl/boost/itl/interval_set.hpp 2008-11-15 06:06:21 EST (Sat, 15 Nov 2008)
@@ -103,8 +103,9 @@
 template
 <
     typename DomainT,
- template<class>class Interval = itl::interval,
- class Compare = std::less<DomainT>,
+ template<class, template<class>class>class
+ Interval = itl::interval,
+ template<class>class Compare = std::less,
     template<class>class Alloc = std::allocator
>
 class interval_set:
@@ -126,10 +127,10 @@
     typedef DomainT codomain_type;
 
     /// The interval type of the set
- typedef Interval<DomainT> interval_type;
+ typedef Interval<DomainT,Compare> interval_type;
 
     /// Comparison functor for domain values
- typedef Compare domain_compare;
+ typedef Compare<DomainT> domain_compare;
     /// Comparison functor for intervals
     typedef exclusive_less<interval_type> interval_compare;
 
@@ -149,7 +150,7 @@
     typedef typename itl::set<DomainT,Compare,Alloc> atomized_type;
 
     /// Container type for the implementation
- typedef typename itl::set<interval_type,exclusive_less<interval_type>,Alloc> ImplSetT;
+ typedef typename itl::set<interval_type,exclusive_less,Alloc> ImplSetT;
 
     /// key type of the implementing container
     typedef typename ImplSetT::key_type key_type;
@@ -221,7 +222,7 @@
 
 
 
-template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 bool interval_set<DomainT,Interval,Compare,Alloc>::contains_(const interval_type& x)const
 {
     // Emptiness is contained in everything
@@ -243,7 +244,7 @@
 }
 
 
-template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void interval_set<DomainT,Interval,Compare,Alloc>::handle_neighbours(const iterator& it)
 {
     if(it == this->_set.begin())
@@ -284,7 +285,7 @@
 
 
 
-template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 typename interval_set<DomainT,Interval,Compare,Alloc>::iterator
     interval_set<DomainT,Interval,Compare,Alloc>
     ::joint_insert(const iterator& left_it, const iterator& right_it)
@@ -305,7 +306,7 @@
 }
 
 
-template<class DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+template<class DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void interval_set<DomainT,Interval,Compare,Alloc>::add_(const value_type& x)
 {
     if(x.empty()) return;
@@ -320,8 +321,8 @@
         typename ImplSetT::iterator end_it = this->_set.upper_bound(x);
 
         typename ImplSetT::iterator it=fst_it, nxt_it=fst_it, victim;
- Interval<DomainT> leftResid; (*it).left_surplus(leftResid,x);
- Interval<DomainT> rightResid;
+ interval_type leftResid; (*it).left_surplus(leftResid,x);
+ interval_type rightResid;
 
         while(it!=end_it)
         {
@@ -330,7 +331,7 @@
             victim = it; it++; this->_set.erase(victim);
         }
 
- Interval<DomainT> extended = x;
+ interval_type extended = x;
         extended.extend(leftResid).extend(rightResid);
         extended.extend(rightResid);
         add(extended);
@@ -338,7 +339,7 @@
 }
 
 
-template<class DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+template<class DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void interval_set<DomainT,Interval,Compare,Alloc>::subtract_(const value_type& x)
 {
     if(x.empty()) return;
@@ -364,8 +365,8 @@
 //-----------------------------------------------------------------------------
 // equality of elements
 //-----------------------------------------------------------------------------
-template <typename DomainT, template<class>class Interval,
- class Compare, template<class>class Alloc>
+template <typename DomainT, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc>
 inline bool is_element_equal(const interval_set<DomainT,Interval,Compare,Alloc>& lhs,
                              const interval_set<DomainT,Interval,Compare,Alloc>& rhs)
 {

Modified: sandbox/itl/boost/itl/split_interval_map.hpp
==============================================================================
--- sandbox/itl/boost/itl/split_interval_map.hpp (original)
+++ sandbox/itl/boost/itl/split_interval_map.hpp 2008-11-15 06:06:21 EST (Sat, 15 Nov 2008)
@@ -129,8 +129,8 @@
         typename DomainT,
         typename CodomainT,
         class Traits = itl::neutron_absorber,
- template<class>class Interval = itl::interval,
- class Compare = std::less<DomainT>,
+ template<class, template<class>class>class Interval = itl::interval,
+ template<class>class Compare = std::less,
         template<class>class Alloc = std::allocator
>
     class split_interval_map:
@@ -147,7 +147,7 @@
         typedef split_interval_map<DomainT,CodomainT,itl::neutron_absorber,Interval,Compare,Alloc>
             neutron_absorber_type;
 
- typedef Interval<DomainT> interval_type;
+ typedef Interval<DomainT,Compare> interval_type;
         typedef typename base_type::iterator iterator;
         typedef typename base_type::value_type value_type;
         typedef typename base_type::base_value_type base_value_type;
@@ -244,7 +244,7 @@
     } ;
 
 
- template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     bool split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
         ::contains_(const value_type& interv_value)const
     {
@@ -260,7 +260,7 @@
 
 
 
- template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>::getResiduals(const interval_type& x_itv, interval_type& leftResid, interval_type& rightResid)
     {
         iterator fst_it = this->_map.lower_bound(x_itv);
@@ -289,7 +289,7 @@
 
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::fill(const value_type& value)
 {
@@ -302,7 +302,7 @@
 }
 
 template <typename DomainT, typename CodomainT, class Traits,
- template<class>class Interval, class Compare, template<class>class Alloc>
+ template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::fill_gap(const value_type& value, const Combiner& combine)
@@ -326,7 +326,7 @@
 //-----------------------------------------------------------------------------
 // add<Combinator>(pair(interval,value)):
 //-----------------------------------------------------------------------------
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::add_(const value_type& x, const Combiner& combine)
@@ -410,7 +410,7 @@
     }
 }
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::add_rest(const interval_type& x_itv, const CodomainT& x_val,
@@ -440,7 +440,7 @@
     add_rear(x_rest, x_val, it, combine);
 }
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::add_rear(const interval_type& x_rest, const CodomainT& x_val, iterator& it,
@@ -476,7 +476,7 @@
 //-----------------------------------------------------------------------------
 // subtract<Combinator>(pair(interval,value)):
 //-----------------------------------------------------------------------------
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::subtract_(const value_type& x, const Combiner& combine)
@@ -535,7 +535,7 @@
 
 
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     template<class Combiner>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::subtract_rest(const interval_type& x_itv, const CodomainT& x_val,
@@ -588,8 +588,8 @@
 //-----------------------------------------------------------------------------
 // insert(pair(interval,value)):
 //-----------------------------------------------------------------------------
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::insert_(const value_type& x)
 {
@@ -645,8 +645,8 @@
 }
 
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::insert_rest(const interval_type& x_itv, const CodomainT& x_val,
                   iterator& it, iterator& end_it)
@@ -666,8 +666,8 @@
     insert_rear(x_rest, x_val, it);
 }
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval,
- class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval,
+ template<class>class Compare, template<class>class Alloc>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::insert_rear(const interval_type& x_rest, const CodomainT& x_val,
                   iterator& it)
@@ -690,7 +690,7 @@
 //-----------------------------------------------------------------------------
 // erase(pair(interval,value)):
 //-----------------------------------------------------------------------------
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::erase_(const value_type& x)
 {
@@ -749,7 +749,7 @@
 }
 
 
-template <typename DomainT, typename CodomainT, class Traits, template<class>class Interval, class Compare, template<class>class Alloc>
+template <typename DomainT, typename CodomainT, class Traits, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
 void split_interval_map<DomainT,CodomainT,Traits,Interval,Compare,Alloc>
     ::erase_rest(const interval_type& x_itv, const CodomainT& x_val,
                  iterator& it, iterator& end_it)

Modified: sandbox/itl/boost/itl/split_interval_set.hpp
==============================================================================
--- sandbox/itl/boost/itl/split_interval_set.hpp (original)
+++ sandbox/itl/boost/itl/split_interval_set.hpp 2008-11-15 06:06:21 EST (Sat, 15 Nov 2008)
@@ -88,8 +88,8 @@
     template
     <
         typename DomainT,
- template<class>class Interval = itl::interval,
- class Compare = std::less<DomainT>,
+ template<class, template<class>class>class Interval = itl::interval,
+ template<class>class Compare = std::less,
         template<class>class Alloc = std::allocator
>
     class split_interval_set:
@@ -109,10 +109,10 @@
         typedef DomainT codomain_type;
 
         /// The interval type of the set
- typedef Interval<DomainT> interval_type;
+ typedef Interval<DomainT,Compare> interval_type;
 
         /// Comparison functor for domain values
- typedef Compare domain_compare;
+ typedef Compare<DomainT> domain_compare;
         /// Comparison functor for intervals
         typedef exclusive_less<interval_type> interval_compare;
 
@@ -132,7 +132,7 @@
         typedef typename itl::set<DomainT,Compare,Alloc> atomized_type;
 
         /// Container type for the implementation
- typedef typename itl::set<interval_type,exclusive_less<interval_type>,Alloc> ImplSetT;
+ typedef typename itl::set<interval_type,exclusive_less,Alloc> ImplSetT;
 
         /// key type of the implementing container
         typedef typename ImplSetT::key_type key_type;
@@ -199,7 +199,7 @@
         void subtract_rest(const interval_type& x_itv, iterator& it, iterator& end_it);
     } ;
 
- template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     bool split_interval_set<DomainT,Interval,Compare,Alloc>::contains_(const interval_type& interv)const
     {
         if(interv.empty())
@@ -211,7 +211,7 @@
     }
 
 
- template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     void split_interval_set<DomainT,Interval,Compare,Alloc>::add_(const value_type& x)
     {
         if(x.empty()) return;
@@ -273,7 +273,7 @@
     }
 
 
- template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     void split_interval_set<DomainT,Interval,Compare,Alloc>::insert_rest(const interval_type& x_itv, iterator& it, iterator& end_it)
     {
         iterator nxt_it = it; nxt_it++;
@@ -314,7 +314,7 @@
     }
 
 
- template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     void split_interval_set<DomainT,Interval,Compare,Alloc>::subtract_(const value_type& x)
     {
         if(x.empty()) return;
@@ -365,7 +365,7 @@
 
 
 
- template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     void split_interval_set<DomainT,Interval,Compare,Alloc>::subtract_rest(const interval_type& x_itv, iterator& snd_it, iterator& end_it)
     {
         iterator it=snd_it, nxt_it=snd_it; nxt_it++;
@@ -400,7 +400,7 @@
         NOTE: This is not inline with the mathematical view.
         We have a distiction between 'element equality' and 'lexicographical
         equality'. */
- template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     inline bool operator == (const split_interval_set<DomainT,Interval,Compare,Alloc>& lhs,
                              const split_interval_set<DomainT,Interval,Compare,Alloc>& rhs)
     {
@@ -413,7 +413,7 @@
     }
 
 
- template <typename DomainT, template<class>class Interval, class Compare, template<class>class Alloc>
+ template <typename DomainT, template<class, template<class>class>class Interval, template<class>class Compare, template<class>class Alloc>
     inline bool operator < (const split_interval_set<DomainT,Interval,Compare,Alloc>& lhs,
                             const split_interval_set<DomainT,Interval,Compare,Alloc>& rhs)
     {
@@ -422,7 +422,7 @@
         return std::lexicographical_compare(
             lhs_joined.begin(), lhs_joined.end(),
             rhs_joined.begin(), rhs_joined.end(),
- std::less<Interval<DomainT> >()); //JODO URG
+ Compare<Interval<DomainT,Compare> >());
     }
 
     template <class Type>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk