Passed the traits in case it is not stateless

This commit is contained in:
Efi Fogel 2007-03-26 12:15:58 +00:00
parent 317916ce22
commit 2ba4ef9c23
1 changed files with 9 additions and 4 deletions

View File

@ -8,24 +8,29 @@
template <class Traits>
class Equal_pred
{
private:
Traits & m_traits;
public:
Equal_pred(Traits & traits) : m_traits(traits) {}
typedef typename Traits::Point_2 Point_2;
typedef typename Traits::X_monotone_curve_2 X_monotone_curve_2;
bool operator()(const Point_2& p1, const Point_2& p2)
{
return(Traits().equal_2_object()(p1, p2));
return(m_traits.equal_2_object()(p1, p2));
}
bool operator()(const X_monotone_curve_2& c1, const X_monotone_curve_2& c2)
{
return(Traits().equal_2_object()(c1, c2));
return(m_traits.equal_2_object()(c1, c2));
}
};
template <class List, class Traits>
bool compare_lists(const List& list1, const List& list2, Traits& )
bool compare_lists(const List& list1, const List& list2, Traits& traits)
{
typedef typename List::const_iterator Iter;
Iter begin1 = list1.begin();
@ -43,7 +48,7 @@ bool compare_lists(const List& list1, const List& list2, Traits& )
return false;
}
Equal_pred<Traits> eq;
Equal_pred<Traits> eq(traits);
return std::equal(begin1, end1, begin2, eq);
}