みんな〜、pimplイディオムの実装って、auto_ptrでやってるよね?
こういうの、どうかな。pimplイディオム専用のラッピング。

template<class T>
class auto_ref{
public:
  // デフォルトコンストラクタ
  auto_ref(void) : R(*new T) {}
  // 引数つきコンストラクタは、外でnewしたのを渡してもらう
  auto_ref(T* _P) : R(*_P) {}
  ~auto_ref(){delete &R; }
  T& get(void)const {return R; }
private:
  T& R;
};

デフォルトでインスタンスを確保するから、auto_ptrのようにnewする
必要がないのが利点。
メンバ参照演算子(.)のオーバーロードが出来ないから、インスタンスの
アクセスがget()になっちゃってるのがダサイ…というか、欠点。
引数付きコンストラクタを用意しているのは、コンポジションしている
オブジェクト単位でpimlイディオムを使うときに便利だから。

// 先行宣言。A,Bはともに開発中のオブジェクトで、実装はおろか
// インターフェースも定まってないようなクラス。
class A;
class B;
class Hoge{
  Hoge(int,double);
  auto_ref<A> a_;
  auto_ref<B> b_;
}
Hoge::Hoge(int n,double d) :
a_(new A(n)),
b_(new B(d))
{}

…どうかな?