Estou garantido que os ponteiros para os elementos std :: vector são válidos depois que o vetor é movido?
Considerando este exemplo:
std::vector<int> v1 = { 1, 2, 3 };
const int* i = &v1[1];
std::vector<int> v2(std::move(v1));
std::cout << *i << std::endl;
Embora em muitas implementações de STL isso provavelmente funcione, sou garantido pelo padrão que nenhuma realocação é executada quando umstd::vector
é movido e o backup interno do bufferv2
é o mesmo que costumava ser o dev1
? Não consegui encontrar essas informações nem na Internet nem no próprio padrão.