title: Requirement for iterators to refer to an element in the controlled sequence
body: <p>I recently wondered about the behavior of modifying sequence container operations (e.g. <code>insert</code>, <code>erase</code>) when called with iterators that refer to elements not controlled by the container whose member function is called.</p>
  
  <pre><code>int main() {
    std::vector&lt;int&gt; a = {1,2,3}, b = {1,2,3};
    a.erase(b.begin());
  }
  </code></pre>
  
  <p>I know that this will lead to undefined behavior, but where exactly is this forbidden by the standard?</p>
  
  <p>(The "controlled by" terminology is what is used in the Dinkumware documentation and is also used in the standard for some <code>valarray</code> operations although I could not find it with general sequence containers.)</p>