Boost logo

Boost :

From: Markus Schöpflin (markus.schoepflin_at_[hidden])
Date: 2006-02-08 05:37:56


Currently, two of the string tests fail to compile with the following error:

cxx: Error: /vol2/boost/boost/boost/algorithm/string/detail/finder.hpp,
line 412: #20
           identifier "find_tail_impl" is undefined
           detected during:
             instantiation of "boost::iterator_range<Iterator>
 
boost::algorithm::detail::head_finderF::operator()(Forwar
                       dIteratorT, ForwardIteratorT) const [with
                       ForwardIteratorT=char *]" at line 254 of
                       "/vol2/boost/boost/boost/algorithm/string/find.hpp"
             instantiation of
 
"boost::iterator_range<boost::range_result_iterator<C>::t
                       ype> boost::algorithm::find_head(RangeT &, int) [with
                       RangeT=std::string]" at line 129 of
                       "../libs/algorithm/string/test/find_test.cpp"
        find_tail_impl( Begin, End, -m_N );

Looking the the code in question (struct head_finderF::operator()) it
contains the following on line 412:

iterator_range<ForwardIteratorT> Res =
   find_tail_impl( Begin, End, -m_N );

But find_tail_impl() is not declared until line 486 in the same file. Added
the following declaration

template <typename ForwardIteratorT>
iterator_range<ForwardIteratorT>
find_tail_impl(
   ForwardIteratorT Begin,
   ForwardIteratorT End,
   unsigned int N);

at line 394, just before the definition of struct head_finderF makes the
tests compile and pass ok.

I have to admit I'm not sure that the compiler is right to complain about
this, but it seems reasonable to me. So could the declaration of
find_tail_impl please be added to the file somewhere before it's first used.

TIA, Markus


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