ところで質問なのですが代入やコピー構築時に所有権を移動するクラスFooを造りたいのですが、
Foo::Foo(Foo& rhs) : m_p(rhs.m_p) { rhs.m_p = NULL; } // 引数が非constのコピコン
Foo& Foo::operator=(Foo& rhs) { m_p = rhs.m_p; rhs.m_p = NULL; return *this; } // 引数が非constの代入演算子
を定義して、VS2010とかで警告レベルを4に引き上げると
 C4239TypeからType&への変換です
という警告が出るのです

これはFooのムーブコンストラクタを定義したら直るので初めてムーブコンストラクタを定義したいのですが、そこで質問

Q1. ムーブコンストラクタにおいてはコピーされる側の変更はマジで不要?
   つまり、所有権移動が絡む今回のFooの場合でも次の書き方でおk?
Foo::Foo(const Foo&& rhs) : m_p(rhs.m_p) { }

Q2. ムーブコンストラクタにおいてコピーされる側を変更しても(実行効率以外は)無害?
   つまり、所有権移動が絡む今回のFooの場合でコピコンにならって次の書き方をしても安全?
Foo::Foo(Foo&& rhs) : m_p(rhs.m_p) { rhs.m_p = NULL; }