I noticed that when you add an object to a vector in MSVC 2005 the copy constructor of that objects is called twice. There is a new temporary created inside the vector::insert code with the comment "// in case _Val is in sequence"

In gcc it is only called once.

Anyone know why the MSVC implementation does this? I dont get the comment next to it.