template class axl::rc::WeakPtr

#include <axl_rc_RefCount.h>

template <typename T>
class WeakPtr
{
public:
    // construction

    WeakPtr();
    WeakPtr(const NullPtr&);
    WeakPtr(const WeakPtr& src);

    template <typename T2>
    WeakPtr(const WeakPtr<T2>& src);

    template <typename T2>
    WeakPtr(const Ptr<T2>& src);

    template <typename T2>
    WeakPtr(T2* p);

    WeakPtr(
        T* p,
        RefCount* refCount
        );
    ~WeakPtr();

    // methods

    WeakPtr&
    operator=(const NullPtr&);

    WeakPtr&
    operator=(const WeakPtr& src);

    void
    copy(
        T* p,
        RefCount* refCount
        );

    void
    attach(
        T* p,
        RefCount* refCount
        );

    void
    detach(
        T** pp_o = NULL,
        RefCount** refCount_o = NULL
        );

    void
    clear();

    RefCount*
    getRefCount() const;
};