Я просмотрел реализацию MSVC8 vector
- не вижу memmove()
. Предыдущие векторные элементы не перемещаются, они копируются и вызывается их копия c'tor, чтобы скопировать их в новый буфер (буфер размещается в одном выделении, элементы создаются с использованием размещения new).
Конечно, это только реализация MSVC, но именно так vector
должен вести себя в соответствии со стандартом.
Однако, использование memmove
иногда нормально - например, для std::vector<int>
- и реализации STL могут специализироваться для этого случая. Возможно, вы пропустили шаблон 'ветвь', читающий исходный код.