export template <class N> class Alloc { public: // virtual N *get(); // it doesn't happen if we add this declaration virtual ~Alloc(); // it only happens with destructors }; class ThreadAlloc; class Thread { public: static ThreadAlloc storage; }; class ThreadAlloc : public Alloc<Thread> { public: virtual ~ThreadAlloc(); }; ThreadAlloc::~ThreadAlloc() {}