newで生成したオブジェクトを受け取る設計は糞だと思うが、
 auto_ptr<Fuga> unko(new Fuga);
 Hoge *p = new Hoge(unko);
 unko.release();
でいいんじゃない?