Adicionando std :: vector a si mesmo, comportamento indefinido?

Essa questão me deixou inseguro sobre acrescentar um vetor a si mesmo. Então a questão é: Seguir linhas de código faz o que eu espero, mas é padrão?

vec.reserve(vec.size() * 2):
vec.insert(vec.end(), vec.begin(), vec.end());

A seguir (semreserve()) ainda funciona, é mesmo padrão?

vec.insert(vec.end(), vec.begin(), vec.end());

Ou implementação dependendo?

questionAnswers(1)

yourAnswerToTheQuestion