title: how portable is end iterator decrement?
body: <p>Just encountered decrement of <code>end()</code> iterator in my company source codes and it looks strange for me. As far as I remember this was working on some platforms, but not for the others. Maybe I'm wrong, however I couldn't find anything useful in standard about that. Standard only says that <code>end()</code> returns an iterator which is the past-the-end value, but is it guaranteed to be decrementable? How does code like that match the standard?</p>
  
  <pre><code>std::list&lt;int&gt;::iterator it = --l.end();
  </code></pre>
  
  <p>Thanks in advance.</p>