title: STL vector erase via pointer
body: <p>I <a href="https://stackoverflow.com/a/16446294/48461">understand (at least I think I do)</a> that pointers can be used as random STL iterators.</p>
  
  <p>Why does the following code not compile unless I cast the pointer to an iterator?</p>
  
  <pre><code>vector&lt;int&gt; v{1, 2, 3};
  v.erase(&amp;v[0]);
  </code></pre>