在下面的代码中,2个指针被设置为指向临时std :: vector的成员。那个向量的内容然后std :: move()' d到另一个容器......移动后指针看起来仍然有效(它们打印正确的值,valgrind显示没有问题)但我可以依赖这个行为?规范是否说明在这些情况下会发生什么?
#include <vector>
#include <iostream>
int main( int argc, char* argv[] )
{
int *p5, *p10;
std::vector<int> bufB;
{
std::vector<int> bufA = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
p5 = &bufA[4];
p10 = &bufA[9];
bufB = std::move( bufA );
}
// Does p5 point at the guts of bufB now?
std::cout << "*p5 = " << *p5 << std::endl;
std::cout << "*p10 = " << *p10 << std::endl;
return 0;
}