$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] Review Request: Boost.Itl; The Interval Template Library
From: Jeff Flinn (TriumphSprint2000_at_[hidden])
Date: 2009-09-25 08:19:00
Jeff Flinn wrote:
> Joachim Faulhaber wrote:
...
>> map& map::add(const value_type&);
>>
>> and then an overloaded member function template
>>
>> private:
>> template<class Combiner>
>> map& map::add(const value_type&);
>>
>> so I changed the names of those private member
>> function templates adding a leading underscore '_add'.
>> The code looses some simplicity but it compiles and
>> works with msvc and gcc.
>>
>> I hope this works for the warrior too and he can be
>> appeased soon ;-)
> 
> Yep, that worked for both add & subtract private methods. I now get a 
> complete compile, of course that's just with the #include 
> <boost/itl/split_interval_map.hpp>. Now to actually instantiate some 
> code. :-).
Ok, I get an "ambiguous use of partial specialization" compiler error 
when I add the last line below:
{
        typedef boost::itl::interval_map<int, int> OverlapCounterT;
     OverlapCounterT overlap_counter;
     boost::itl::interval<int> itv;
     itv = boost::itl::interval<int>::rightopen(4,8);
     overlap_counter += 
std::make_pair(boost::itl::interval<int>::rightopen(4,8), 1);
}
the compiler error text is:
Error   : ambiguous use of partial specialization
  (point of instantiation: 'CoverageGraphIntervalsTest::testTopology()')
   (instantiating: 
'boost::enable_if<boost::itl::is_intra_derivative<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>, 
std::pair<boost::itl::interval<int, std::less>, int>>, 
boost::itl::interval_map<int, int, boost::itl::partial_absorber, 
std::less, boost::itl::inplace_plus, boost::itl::inplace_et, 
boost::itl::interval, std::allocator>>')
    (instantiating: 
'boost::itl::is_intra_derivative<boost::itl::interval_map<int, int, 
boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>, 
std::pair<boost::itl::interval<int, std::less>, int>>')
     (instantiating: 
'boost::mpl::or_<boost::mpl::and_<boost::itl::is_interval_set<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>>, 
boost::itl::is_interval_set_derivative<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>, 
std::pair<boost::itl::interval<int, std::less>, int>>, 
boost::mpl::bool_<true>, boost::mpl::bool_<true>, 
boost::mpl::bool_<true>>, 
boost::mpl::and_<boost::itl::is_interval_map<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>>, 
boost::itl::is_interval_map_derivative<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>, 
std::pair<boost::itl::interval<int, std::less>, int>>, 
boost::mpl::bool_<true>, boost::mpl::bool_<true>, 
boost::mpl::bool_<true>>, boost::mpl::bool_<false>, 
boost::mpl::bool_<false>, boost::mpl::bool_<false>>')
      (instantiating: 'boost::mpl::aux::or_impl<false, 
boost::mpl::and_<boost::itl::is_interval_map<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>>, 
boost::itl::is_interval_map_derivative<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>, 
std::pair<boost::itl::interval<int, std::less>, int>>, 
boost::mpl::bool_<true>, boost::mpl::bool_<true>, 
boost::mpl::bool_<true>>, boost::mpl::bool_<false>, 
boost::mpl::bool_<false>, boost::mpl::bool_<false>>')
       (instantiating: 
'boost::mpl::and_<boost::itl::is_interval_map<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>>, 
boost::itl::is_interval_map_derivative<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>, 
std::pair<boost::itl::interval<int, std::less>, int>>, 
boost::mpl::bool_<true>, boost::mpl::bool_<true>, boost::mpl::bool_<true>>')
        (instantiating: 'boost::mpl::aux::and_impl<true, 
boost::itl::is_interval_map_derivative<boost::itl::interval_map<int, 
int, boost::itl::partial_absorber, std::less, boost::itl::inplace_plus, 
boost::itl::inplace_et, boost::itl::interval, std::allocator>, 
std::pair<boost::itl::interval<int, std::less>, int>>, 
boost::mpl::bool_<true>, boost::mpl::bool_<true>, boost::mpl::bool_<true>>')
and.hpp line 28           >
Jeff