title: Why does std::vector::insert invalidate all iterators after the insertion point
body: <p>When <code>insert</code>-ing into a <code>std::vector</code> the C++ standard assures that all iterators before the insertion point remain valid as long as the <code>capacity</code> is not exhausted (see [23.2.4.3/1] or <a href="https://stackoverflow.com/questions/3747691/stdvector-iterator-invalidation">std::vector iterator invalidation</a>).</p>
  
  <p>What is the rationale behind not allowing iterators after the insertion point to remain valid (if the capacity is not exhausted)? Of course, they would then point to a different element but (from the presumed implementation of <code>std::vector</code>) it should still be possible to use such an iterator (for example dereference it or increment it).</p>