>>341
要するに Register 関数に所有権を移動させたいのよね? なら
  void Register(std::auto_ptr<T> p);
にすれば解決するような気がする