|
Boost : |
Subject: [boost] boost::ptr_container: seems bug in erase_if
From: Anton Ivanov (ai_at_[hidden])
Date: 2008-12-11 03:15:11
Hi!
In ptr_sequence_adapter.hpp we have function:
template< class Pred >
void erase_if( iterator first, iterator last, Pred pred )
{
range_check(first,last);
this->base().erase( std::remove_if( first.base(), last.base(),
void_ptr_delete_if<Pred,value_type>(pred) ),
this->base().end() );
}
If we call this function with second parameter not equal to
this->base().end() then function remove not only elemets for wich pred
return true, but also all alement from last.base() to the end of
container (this->base().end()). This is seems bug due to function
documentation:
template< class Pred > void erase_if( Pred pred );
template< class Pred > void erase_if( iterator begin, iterator end, Pred
pred );
* Requirements: Pred must take an const T& argument
* Effects: removes all elements t for which pred(t) returns true
from the entire container or the specified range
-- Yours sincerely, Anton Ivanov (ai_at_[hidden])
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk