BOOST_FOREACH(std::pair<std::string, std::string>& entry, m_foo){
// do stuff
}
... the compiler complaints with a series of confusing messages: (I translated the first line, the rest seems to be generic syntax errors resulting from the first line)
1>.\fb_master.cpp(159) : warning C4002: too many actual parameters for macro 'BOOST_FOREACH'
1>.\fb_master.cpp(159) : error C2143: Syntaxfehler: Es fehlt ')' vor '>'
1>.\fb_master.cpp(159) : error C2059: Syntaxfehler: '>'
1>.\fb_master.cpp(159) : error C2059: Syntaxfehler: ')'
1>.\fb_master.cpp(159) : error C2143: Syntaxfehler: Es fehlt ';' vor '{'
1>.\fb_master.cpp(159) : error C2181: Ungültiges 'else' ohne zugehöriges 'if'
1>.\fb_master.cpp(159) : error C2065: 'entry': nichtdeklarierter Bezeichner
1>.\fb_master.cpp(159) : error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck
1>.\fb_master.cpp(159) : error C2065: 'entry': nichtdeklarierter Bezeichner
1>.\fb_master.cpp(159) : error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck
1>.\fb_master.cpp(159) : error C2065: 'entry': nichtdeklarierter Bezeichner
1>.\fb_master.cpp(159) : error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck
1>.\fb_master.cpp(159) : error C2065: 'entry': nichtdeklarierter Bezeichner
1>.\fb_master.cpp(159) : error C2275: 'std::string': Ungültige Verwendung dieses Typs als Ausdruck
1>.\fb_master.cpp(159) : error C2143: Syntaxfehler: Es fehlt ')' vor '>'
1>.\fb_master.cpp(159) : error C2059: Syntaxfehler: '>'
1>.\fb_master.cpp(159) : error C2059: Syntaxfehler: ')'
1>.\fb_master.cpp(159) : error C2059: Syntaxfehler: 'else'
1>.\fb_master.cpp(159) : error C2143: Syntaxfehler: Es fehlt ')' vor '>'
1>.\fb_master.cpp(159) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>.\fb_master.cpp(159) : error C2244: 'encode_type': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden
Unfortunatly I have this situation a lot with different combinations of types and I don't want to typedef all of them.
Or at least I wouldn't like it because it feels like a cheap workaround.
And no, I can't use auto. I have to use a C++98 compiler.
Macros don't know what C or C++ is. From their perspective, that comma after the first std::string separates two macro parameters, not two template parameters. Typedef is the way to go.
The final edit to my post was eight minutes before you replied. If you were still working on a previous version, then I apologise; it seemed safe to assume that it hadn't taken you eight minutes to write that, but I can imagine circumstances in which you were working with an old iteration.
it seemed safe to assume that it hadn't taken you eight minutes to write that, but I can imagine circumstances in which you were working with an old iteration.
I frequently find myself starting a reply, then having to leave it to do something more urgent, coming back to it later. 8 minutes is nothing; I don't think it's fair to assume that at all.