nsAutoRef<T> is a template class implementing an object that holds a handle to a resource that must be released, typically on destruction of the object.
nsAutoRef has a role similar to nsAutoPtr and nsRefPtr but does not require that the handle is a pointer to an object that was created with new or has AddRef() and Release() methods. nsAutoRef is therefore useful for managing a reference to a foreign object.
No copy constructor nor copy assignment operators are available, so the handle to the resource will be held until released on destruction of the nsAutoRef or until explicitly reset() or transferred through provided methods.
In order to use nsAutoRef<T> for a class T associated with a particular resource type, the type of the handle to the resource and the method for releasing the resource must be provided for class T. This is usually done by providing a specialization of nsAutoRefTraits<T>.
nsAutoRef is defined in