Having been coding in c# for some time now, what is really nice about the language compared to c++ is the foreach statement. The syntax is really natural and easy to read:
foreach (string s in strings)
Compare this to the standard c++ notation:
for (vector::const_iterator i = strings.begin(), iend = strings.end(); i != iend; ++i)
So I decided there must be something easier and vague remembered that boost had something for this. And low and behold they had. So now instead of writing that horrible for line, one can just write:
foreach (const string& s, strings)
It’s not quite as nice as i c# since one can’t have a pair on the leftside of the comma, so one needs to be using typedefs to fix that. And one must also remember the & as to not create unneeded copies of the string.
And the best part is that it’s written as a bunch of templates and macro’s so one can just include a header and of it goes. Doesn’t even have to change the Makefile 🙂
I’ve converted the whole MMS 1.1.0 code base to the new syntax and it’s really so much easier to read. Especially because I tend to use better names for the loop variable than i 🙂