U>вот кстати первый ответ тут от STL: https://www.reddit.com/r/cpp/comments/vog1p/a_commonly_unknown_stdvector_pitfall/
U>а он говорит следующее: это валидный код, а в студии имеем баг
U>U>VC11 currently has a bug where v.emplace_back(v[0]) fails
U>я склонен ему доверять и вам того же советую
Вполне возможно, что баг у них всё же есть. Может быть, наблюдаемое ТС поведение не было запланировано разработчиками стандартной библиотеки от Microsoft, однако факт остаётся фактом -- никто в стандарте нам ничего по этому поводу не обещал.
Всё, что нам сказано, это (цитирую):
ISO/IEC 14882:2011
23.3.6.5 vector modifiers [vector.modifiers]
Remarks: Causes reallocation if the new size is greater than the old capacity. If no reallocation happens,
all the iterators and references before the insertion point remain valid
До, во время, после -- это уже детали реализации.