簡単な例 (以下) を使用して std::move の方法を理解しようとしています。基本的には p1 から p2 の内容に移動しようとしているので、その後 p1 は空になりますが、これは起こりません。
std::move を正しく使用していないと思います。誰かが私にそれを説明できれば、とても感謝しています。
#include <iostream>
#include <utility>
int main()
{
    int * p1 = new int[10];
    for(int i = 0; i < 10; ++i)
        p1[i]=i;
    // moving contents of p1 to p2  
    int * p2 = std::move(p1);   
    // I was expeting p1 now to be empty but it's not...
    if(p1 != NULL)
        std::cout << "I'M NOT EMPTY\n";
    // prints I'M NOT EMPTY     
}