I see a lot of c++ code that looks like this:
for( const_iterator it = list.begin(), const_iterator ite = list.end(); it != ite; ++it)
Aah, people seem to be making guesses. Open up your code in the debugger & you will see that the calls to begin(), end() etc everything is optimized away. There is no need to use version 1. Tested with Visual C++ compiler fullopt.