+ T *get() const { return data; }
+ T &operator*() const { return *data; }
+ T *operator->() const { return data; }
+ operator bool() const { return data!=0; }
+
+ unsigned refcount() const { return (data ? counts->count : 0); }
+
+ template<typename U>
+ static RefPtr<T> cast_dynamic(const RefPtr<U> &p)
+ { return RefPtr<T>(dynamic_cast<T *>(p.data), p.counts); }
+
+private:
+ void incref()