title: Why can't I do std::map.begin() + 1?
body: <p>I have a <code>std::map</code>, which I want to iterate over, starting at the second entry.</p>
  
  <p>I can workaround this fine, but I'm confused about why the "obvious" syntax doesn't compile. The error message doesn't help, because it refers to <code>std::string</code>, which I'm not using here.</p>
  
  <p>Here's some code</p>
  
  <pre><code>// Suppose I have some map ...
  std::map&lt;int, int&gt; pSomeMap;
  
  // This is fine ...
  std::map&lt;int, int&gt;::const_iterator pIterOne = pSomeMap.begin();
  ++pIterOne;
  
  // This doesn't compile ...
  std::map&lt;int, int&gt;::const_iterator pIterTwo = pSomeMap.begin() + 1;
  </code></pre>
  
  <p>Visual&nbsp;Studio&nbsp;2012 gives the following error on the above line:</p>
  
  <pre class="lang-none prettyprint-override"><code>error C2784: 'std::_String_iterator&lt;_Mystr&gt; std::operator +
  (_String_iterator&lt;_Mystr&gt;::difference_type,std::_String_iterator&lt;_Mystr&gt;)' :
  could not deduce template argument for 'std::_String_iterator&lt;_Mystr&gt;' from 'int'
  </code></pre>
  
  <p>What's happening here?</p>