|
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