我有一个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;
Visual Studio 2012 在上面的行中给出了以下错误:
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'
这里发生了什么事?