
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Pavol Droba
This fix is correct. It is precisely what is equal ment to be. I have overlooked the order of comparisons.
An optimization: I realized later that it can be costly to evaluate the eof states. I would save them in a local bool variable instead of calling the eof functions twice for each comparison. ...return eof() || Other.eof() ? eof() == Other.eof() : etc.
find_iterator can be in two states: 1) Valid: all internal iterator variables point to valid iterators. Valid find iterators are equal if they point to the same part of the sequence.
2) Null: all null iterators are equal and at the end of sequence, the iterator automaticaly becames null.
After my very first (speculative) posting, I found that in the documentation and understood that you don't need any special function for end iterators :)
BTW, the replace test doesn't compile at all with VC7.1+STLPort. I'll have a look on that later.
I don't know what can be the problem. Can you elaborate a little more?
I didn't investigate more then; today it compiles (I really don't understand why, I have to admit) _but_: now the same VC 8 regression test fails with exactly the same error (see below)! (A workaround was to split the function into some smaller ones.) ..\libs\algorithm\string\test\replace_test.cpp(147) : fatal error C1509: compiler limit : too many exception handler states in function 'replace_test'. simplify function Stefan