159class SafePtr :
public SafePtrBase
162 SafePtr(T *objptr = 0);
163 SafePtr(
const SafePtr& obj);
164 SafePtr(SafePtr&& obj);
166 SafePtr& operator=(
const SafePtr& obj);
167 SafePtr& operator=(T *
const obj);
168 SafePtr& operator=(SafePtr&& obj);
171 friend bool operator== <>(SafePtr<T> a, T *b);
172 friend bool operator!= <>(SafePtr<T> a, T *b);
173 friend bool operator== <>(T *a, SafePtr<T> b);
174 friend bool operator!= <>(T *a, SafePtr<T> b);
175 friend bool operator== <>(SafePtr<T> a, SafePtr<T> b);
176 friend bool operator!= <>(SafePtr<T> a, SafePtr<T> b);
180 friend bool operator==(SafePtr<U> a, U *b);
182 friend bool operator!=(SafePtr<U> a, U *b);
184 friend bool operator==(U *a, SafePtr<U> b);
186 friend bool operator!=(U *a, SafePtr<U> b);
188 friend bool operator==(SafePtr<U> a, SafePtr<U> b);
190 friend bool operator!=(SafePtr<U> a, SafePtr<U> b);
193 bool operator!()
const;
194 operator T *()
const;
195 T *operator->()
const;
196 T& operator*()
const;