Boost logo

Boost :

Subject: Re: [boost] Review Request: Boost.Itl; The Interval Template Library
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2009-09-25 09:49:23

2009/9/25 Jeff Flinn <TriumphSprint2000_at_[hidden]>:
> Jeff Flinn wrote:
> 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,
. . .

well I have studied the tiny error message. As far as I can see
the instantiations that are given are correct, they should lead
to the right instantiation result and there is no hint from the
warrior what exactly is ambiguous to him.

It's a little depressing to see how much compilers can
disagree, specifically in this enable_if SFINAE minefield.

In other words, I don't have a quick fix that I can offer here.
What you can try, to get the example running, is to apply
member function add


instead of the overloaded operator +=.


Boost list run by bdawes at, gregod at, cpdaniel at, john at