export template <class T> class Alloc { public: Alloc() {} // virtual T *get(); virtual ~Alloc(); }; export template <class T> class GCAlloc : public Alloc<T> { public: GCAlloc() {} virtual ~GCAlloc(); }; class Thread {}; class Process { public: GCAlloc<Thread> threads; }; void module() { Process p; }