Почему я не могу сделать std :: map.begin () + 1?

у меня естьstd::map, который я хочу перебрать, начиная со второй записи.

Я могу обойти это нормально, но меня смущает, почему «очевидный» синтаксис не компилируется. Сообщение об ошибке не помогает, потому что оно относится кstd::string, который я здесь не использую.

Вот код

// 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 выдает следующую ошибку в приведенной выше строке

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'

Кто-нибудь может объяснить, что здесь происходит?

Ответы на вопрос(2)

Ваш ответ на вопрос