私はstd::map
を持っていますが、これは2番目のエントリから開始して繰り返します。なぜstd :: map.begin()+ 1を実行できないのですか?
私はこの問題を回避することができますが、なぜ「明白な」構文がコンパイルされないのか混乱しています。エラーメッセージは、ここで使用していない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与え、次のエラー上記の行に
エラーC2784:「STD :: _ String_iterator < _Mystr>のstd ::演算子+(_ String_iterator < _Mystr> :: difference_type、std :: _ String_iterator < _Mystr>) ':' std :: _ String_iterator < _Mystr> 'のテンプレート引数を' int 'から推測できません
ここで何が起こっているのか説明できる人はいますか?
ほとんどの奇妙なエラーメッセージはこれまでありましたか? – curiousguy