Здравствуйте, Bender Bending Rodriguez, Вы писали:
BBR>но с какого перепуга мы сюда вообще попадаем, мне пока неочевидно
Это реализация move-стратегии при расширении буфера вектора.
Вектор пытается не скопировать, а перетащить данные из старого буфера в новый.
Для этого буфер предварительно заполняется пустыми объектами, после чего выполняется swap данных.
У меня нет 2008-й, и ты не привел полный список параметров, но по коду 2005-й,
template<class _InIt, class _FwdIt, class _Alloc>
inline _FwdIt _Uninit_move(
соответствует версии _Uninit_move для типов с поддержкой _Swap_move_tag.
Категория move определяется выше по стеку вызовов, и задается явным перечислением типов.
По-видимому, в 2008-й std::pair объявлен всегда поддерживающим swap ...