title: How do you erase *AND CONTINUE* using a std::reverse_iterator?
body: <p>I've been up and down stackoverflow and even the very, very nice <a href="http://drdobbs.com/cpp/184401406" rel="nofollow noreferrer">Dr. Dobbs article</a> but I can't find a definitive answer to the question.</p>
  
  <p>A section of the answer to the question <a href="https://stackoverflow.com/questions/3207679/what-are-the-shortcomings-of-stdreverse-iterator">What are the shortcomings of std::reverse_iterator?</a> says that it might not be possible at all.</p>
  
  <pre><code>
  std::list::reverse_iterator it = list.rbegin();
  
  while(  it != list.rend() )
  {
     int value=*it;
     if( some_cond_met_on(value) )
     {     
          ++it;
          list.erase( it.base() );
     }
     else
     {
       ++it;
     }
  }
  </code></pre>
  
  <p>PS: I do know there are other alternatives, such as erase_if(), but I'm looking for an answer to this specific question.</p>