¿Estoy seguro de que los punteros a los elementos std :: vector son válidos después de mover el vector?
Considerando este ejemplo:
std::vector<int> v1 = { 1, 2, 3 };
const int* i = &v1[1];
std::vector<int> v2(std::move(v1));
std::cout << *i << std::endl;
Aunque en muchas implementaciones de STL esto probablemente funcionará, ¿estoy garantizado por el estándar de que no se realizan reasignaciones cuando unstd::vector
se mueve y el respaldo interno del búferv2
es el mismo que solía ser el dev1
? No pude encontrar esta información ni en Internet ni en el estándar mismo.