template<class AType> class TAliasTo : public TPointerTo<AType> { public: TAliasTo(AType* = NIL); TAliasTo(const TAliasTo& copy); ~TAliasTo(); TAliasTo& operator=(AType* copy); TAliasTo& operator=(const TAliasTo<AType>& copy); operator AType*() const {return GetAlias();} AType* Orphan(); }; template<class AType> void Resurrect (TAliasTo<AType>& p, TStream& from) {auto AType* raw; Resurrect (raw, from); p = raw;} template<class AType> void Resurrect (TAliasTo<AType>& p, TStream& from, TMemoryHeap& heap) {auto AType* raw; Resurrect (raw, from, heap); p = raw;} template<class AType> void Resurrect (TAliasTo<AType>& p, TStream& from, EHeapType t, const void* o) {auto AType* raw; Resurrect (raw, from, t, o); p = raw;}