// Build don't link: // Origin: Steven Parkes typedef __SIZE_TYPE__ size_t; class UUId {}; template class MetaClass; class TypeInfo; struct MetaClassGeneric { MetaClassGeneric( TypeInfo& ); }; struct TypeInfo { void (*constructor)( void* ); void initialize( void* ); }; template class TypeIDInit { public: TypeIDInit(); static void initialize(); static TypeInfo info; static int storage[]; static void metaclassConstructor( void* ); }; template TypeInfo TypeIDInit::info = { TypeIDInit::metaclassConstructor }; template inline TypeIDInit::TypeIDInit() { info.initialize(storage); } template class NameInfo : public MetaClassGeneric { public: NameInfo() : MetaClassGeneric( TypeIDInit::info ) {} }; class MetaClass : public NameInfo { }; extern "C++" inline void *operator new(size_t, void *place) throw() { return place; } template void TypeIDInit::metaclassConstructor( void* place ) { new ( place ) MetaClass; } template class TypeIDInit ;