¿Por qué no puedo hacer std :: map.begin () + 1?

tengo unstd::map, que quiero repetir a partir de la segunda entrada.

Puedo solucionar este problema, pero estoy confundido acerca de por qué no se compila la sintaxis "obvia". El mensaje de error no ayuda porque se refiere astd::string, que no estoy usando aquí.

Aquí hay un código

// suppose I have some map ...
std::map<int, int> pSomeMap;

// this is fine ...
std::map<int, int>::const_iterator pIterOne = pSomeMap.begin();
++pIterOne;

// this doesn't compile ...
std::map<int, int>::const_iterator pIterTwo = pSomeMap.begin() + 1;

VS2012 da el siguiente error en la línea anterior

error C2784: 'std::_String_iterator<_Mystr> std::operator +
(_String_iterator<_Mystr>::difference_type,std::_String_iterator<_Mystr>)' :
could not deduce template argument for 'std::_String_iterator<_Mystr>' from 'int'

¿Alguien puede explicar lo que está pasando aquí?

Respuestas a la pregunta(2)

Su respuesta a la pregunta