Boost logo

Boost :

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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk