ちょっと長いけど、これg++4.1.2だと通るのにVC++10だと通らないw なんじゃそりゃ。

template <typename T> class ImplBase {};
class A1 {
private:
class Impl;
Impl *pimpl;
public:
A1();
~A1();
};
class A1::Impl : ImplBase<A1::Impl> {
public:
Impl() {}
~Impl() {}
};
A1::A1() : pimpl(new Impl()) {}
A1::~A1() { delete pimpl; }