
Thorsten Ottosen wrote:
Joshua Moore-Oliva wrote:
I was doing what I do regularly with std::maps... a m_plsts.erase( m_plsts.begin(), m_plsts.end() ); on a boost::ptr_map. It failed with an assertion error... Digging around, it came from ptr_container/detail/associative_ptr_container.hpp on line 117. It appears that every single erase (including that done by a key) has an assert for the list not being empty!
I could not see that assertion in the 1.34 RC branch? Are your examples from 1.33? Here's the definition from 1.34: size_type erase( const key_type& x ) // nothrow { iterator i( this->c_private().find( x ) ); // nothrow if( i == this->end() ) // nothrow return 0u; // nothrow this->remove( i ); // nothrow return this->c_private().erase( x ); // nothrow } This works fine if the map is empty. Wheter the overload that takes an iterator should be allowed to accept the end iterator is another issue. I'll give it some thought. -Thorsten