103 template<
class C>
class P {
111 C *operator ->()
const;
112 template<
class D>
operator D *()
const {
114 return static_cast<D *
>((C *)object_);
116 bool operator ==(C *c)
const;
117 bool operator !=(C *c)
const;
118 bool operator !()
const;
119 bool operator <(
P<C> &p)
const {
return (
size_t)object_ < (size_t)p.object_; }
120 bool operator <(
const P<C> &p)
const {
return (
size_t)object_ < (size_t)p.object_; }
121 template<
class D>
bool operator ==(
P<D> &p)
const;
122 template<
class D>
bool operator !=(
P<D> &p)
const;
123 P<C> &operator =(C *c);
125 template<
class D>
P<C> &operator =(
const P<D> &p);
132 template<
class C>
friend class P;
136 uint32 __vfptr_padding_Object_;
138 std::atomic_int32_t refCount_;
140 #ifdef WITH_DETAIL_OID
146 virtual void decRef();
147 #ifdef WITH_DETAIL_OID
148 uint64 get_detail_oid()
const {
return detail_oid_; }
155 void set_detail_oid(uint64 detail_oid);
169 #include "base.tpl.cpp"