Boost logo

Boost :

Subject: [boost] [range][string_algo] Conflict between algorithm names
From: Jeremiah Willcock (jewillco_at_[hidden])
Date: 2010-03-29 13:14:38


When I try to include both Boost.Range algorithms (in the current trunk
version) and Boost.Algorithm, using a file such as the following:

#include <boost/algorithm/string.hpp>
#include <boost/range/algorithm.hpp>

I receive several errors about duplicate definitions. I am using gcc
4.1.2 on Linux.

./boost/range/algorithm/find.hpp:28: error: ¡template<class
SinglePassRange, class Value> typename boost::range_iterator::type
boost::find(SinglePassRange&, const Value&)¢ conflicts with previous using
declaration ¡template<class RangeT, class FinderT>
boost::iterator_range<typename boost::range_iterator<C>::type>
boost::algorithm::find(RangeT&, const FinderT&)¢
./boost/range/algorithm/lexicographical_compare.hpp:28: error:
¡template<class SinglePassRange1, class SinglePassRange2> bool
boost::lexicographical_compare(const SinglePassRange1&, const
SinglePassRange2&)¢ conflicts with previous using declaration
¡template<class Range1T, class Range2T> bool
boost::algorithm::lexicographical_compare(const Range1T&, const Range2T&)¢
./boost/range/algorithm/lexicographical_compare.hpp:42: error:
¡template<class SinglePassRange1, class SinglePassRange2, class
BinaryPredicate> bool boost::lexicographical_compare(const
SinglePassRange1&, const SinglePassRange2&, BinaryPredicate)¢ conflicts
with previous using declaration ¡template<class Range1T, class Range2T,
class PredicateT> bool boost::algorithm::lexicographical_compare(const
Range1T&, const Range2T&, PredicateT)¢

The using declarations mentioned in the error message are in files such as
boost/algorithm/string/find.hpp. Is there a workaround or easy fix for
this?

-- Jeremiah Willcock


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