In what way would the below C++98 be clearer than Tom 38's version? What does the added verbosity gain?
list<pair<string, string> > words;
words.push_back(pair("About bloody", "Time"));
list<pair<string, string> >::const_iterator i = words.begin();
while (i != words.end())
cout << i.first << i.second << endl;
++i; // mustn't forget this
I thought Tom38's post made some everyday C++11 advantages clear: the old way required a loop condition test and manual iterator increment (chance for errors) as well as a redundant declaration of the iterator type (more work to change to use a different container if needed, as well as the general fiddliness and verbosity of STL iterators).
What important information is the auto keyword hiding? Now that the features are in the standard, these should become common C++ idioms that any programmer worth anything will recognise and read fluently.
This is just the kind of syntactic sugar that raises the abstraction level slightly and makes programs more readable, as well as making the initial and subsequent programmers touching the code more productive (get rid of a common class of bugs, make reading the code faster and make refactoring easier - what's not to like?).