template class CCL::ComparablePtr

Smart pointer class for comparison, T::compare() must be defined.

#include <smartptr.h>

template <class T>
class ComparablePtr
{
public:
    // construction

    ComparablePtr (T* ptr = nullptr);
    ComparablePtr (const ComparablePtr <T>&);

    // methods

    ComparablePtr <T>& assign (T* ptr);
    ComparablePtr <T>& operator = (T* ptr);
    ComparablePtr <T>& operator = (const ComparablePtr <T>&);
    bool operator > (const ComparablePtr <T>& other) const;
    bool operator < (const ComparablePtr <T>& other) const;
    bool operator == (const ComparablePtr <T>& other) const;
    T* operator -> () const;
    operator T* () const;
    operator T*& ();
};