规范是否指定了指向std :: move()' d容器的指针会发生什么?

时间:2016-10-25 16:07:31

标签: c++ c++11 move-semantics

在下面的代码中,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;
}

0 个答案:

没有答案