Smart Pointer of StringTemplatesInheritanceReference CountingSmart PointersUCObjectUCObject holds the count use-counted objectUCPointerUCPointer is a smart pointer to a UCObject Using a templateOverloads -> and *RelationshipString has a UCPointerUCPointer has a StringRepStringRep is a UCObject(inheritance)CritiqueUCPointer maintains reference countsUCObject hides the details of the count String is very cleanStringRep deals only with string storage and manipulationUCObject and UCPointer are reusableObjects with cycles of UCPointer will never be deleted