std::map
2 番目のエントリから繰り返し処理したい があります。
私はこれをうまく回避できますが、「明白な」構文がコンパイルされない理由について混乱しています。エラー メッセージは、ここでは使用していない を参照しているため、役に立ちません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'
ここで何が起こっているのですか?