Boost logo

Boost :

From: Stefan Slapeta (stefan_nospam__at_[hidden])
Date: 2004-07-18 13:34:10


John Maddock wrote:
> There seems to be a bug in the string algorithm library that results in a
> valid container iterator being compared to a "singular" default constructed
> iterator: this operation is not supported by the iterator requirements

I'm not sure if I understand correctly what you mean, but the default
constructed iterator is inteded to represent the past-the-end value.

>
> And the actual problem I think is caused by (iter_find.hpp#98):
>
> transform_iter_type itBegin=
>
> make_transform_iterator(
>
> find_iterator_type( begin(Input), InputEnd, Finder ),
>
> copy_range_type());
>
>
> transform_iter_type itEnd=
>
> make_transform_iterator(
>
> find_iterator_type(), // end iterator is default constructed here!!
>
> copy_range_type());
>
> SequenceSequenceT Tmp(itBegin, itEnd); // assertion here

I didn't find out yet what it is (it takes some time to get STLPort
running...), but it works for c strings and crashes for std::string (see
the first two calls of the library in the split testcase). These and
other lines were changed a few days ago to fix a bug that we found on
default constructed iterators for c strings. Now it seems there are also
troubles with std::strings...
The problem is that Pavol left for vacation.

>
> There may be other occurances of course,
>

Yes, one a few lines below (iter_split) but not more.

Stefan


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