11template <
typename... Args>
13 T *ptr =
new T(
args...);
24template <
typename... Args>
31template <
typename U,
typename>
47 other.referent_ =
nullptr;
78 other.referent_ =
nullptr;
115 other.referent_ = temp;
134 ptr->setWeakPtr(weakRef);
152 ptr->setWeakPtr(weakRef);
179 other.mWeakPtr =
nullptr;
189 if (
this != &other) {
206 T *out =
static_cast<T *
>(
mWeakPtr->getReferent());
211 if (out->ref_count() == 0) {
253 return lock().get() == other;
259 return other ==
nullptr;
261 return mWeakPtr->getReferent() == other;
274 bool equal = *
this == other;
295 T *referent =
static_cast<T *
>(tmp->
getReferent());
312template <
typename T,
typename... Args>
static Ptr TakeOwnership(T *ptr)
void swap(Ptr &other) noexcept
WeakPtr< T > weakRefNoCreate() const
Ptr(const Ptr< U > &refptr)
static Ptr NoTracking(T &referent)
Ptr & operator=(T *referent)=delete
WeakPtr & operator=(const WeakPtr &other)
bool operator==(const WeakPtr &other) const
bool operator!=(const WeakPtr &other) const
void setReferent(Referent *referent)
Referent * getReferent() const
Ptr< T > NewPtr(Args... args)
pair_element< I, T1, T2 >::type & get(pair< T1, T2 > &p) noexcept
bool equal(Iterator1 first1, Iterator1 last1, Iterator2 first2)
Ptr< T > NewPtrNoTracking(Args... args)