
Hey, John. Your benchmark results make a very interesting addition to the discussion. Perhaps I can clear something up for you: On Sun, Jul 19, 2009 at 02:46:33PM +0100, John Bytheway wrote:
The problem is that parse takes its first argument by reference, and va.begin() is a temporary. If I take a copy of va.begin() and pass that it works fine. I don't see how this compiled in MSVC (does string::begin() return a non-const reference?), but anyway.
MSVC allows binding temporaries to non-const reference arguments, as an extension. It's sort of useful, but it's also sort of annoying - sometimes both at once. -- "He is strongly identified with rebels, you see, and very popular with rabbles. They will follow him and he will fight to the last drop of their blood." Chris Boucher, Blake's 7 D13 ‘Blake’ http://surreal.istic.org/ The Answer of the Oracle Is Always Death.