template<class T>
class G3D::WeakReferenceCountedPointer< T >
A weak pointer allows the object it references to be garbage collected. Weak pointers are commonly used in caches, where it is important to hold a pointer to an object without keeping that object alive solely for the cache's benefit (i.e., the object can be collected as soon as all pointers to it outside the cache are gone). They are also convenient for adding back-pointers in tree and list structures.
Weak pointers may become NULL at any point (when their target is collected). Therefore the only way to reference the target is to convert to a strong pointer and then check that it is not NULL.