const int n=2;
array<int,n> xs={1,2};
cout << &xs[1] << endl;
array<int,n> ys = std::move(xs);
cout << &ys[1] << endl;

を見ると、moveが期待される仕事をしてないんですが、
(新たに領域確保し、xsの値をコピーしているようにみえる)
ys=my_move(xs)
によって、xsはundefし、ysはもともとxsが指していた格納領域を使うような
自前のmy_moveを作ることはできませんか?