18 static_assert(std::is_base_of_v<IRef, T>,
"T must be derived class of IRef");
68template <
typename T,
typename U>
70 return lhs.Get() !=
rhs.Get();
73template <
typename T,
typename U>
78template <
typename T,
typename U>
83template <
typename T,
typename U>
88template <
typename T,
typename U>
95 return lhs.Get() ==
nullptr;
100 return rhs.Get() ==
nullptr;
105 return lhs.Get() !=
nullptr;
110 return rhs.Get() !=
nullptr;
115 return lhs.Get() <
rhs.Get();
A intrusive pointer to objects with an embedded reference count.
friend class IntrusivePtr
IntrusivePtr & operator=(IntrusivePtr< U > &&other) noexcept
void Reset(NoRefTag, T *other) noexcept
IntrusivePtr & operator=(const IntrusivePtr< U > &other) noexcept
void Swap(IntrusivePtr &other) noexcept
IntrusivePtr & operator=(T *other) noexcept
bool operator<(const IntrusivePtr< T > &lhs, const IntrusivePtr< T > &rhs) noexcept
bool operator==(const IntrusivePtr< T > &lhs, const IntrusivePtr< U > &rhs) noexcept
bool operator!=(const IntrusivePtr< T > &lhs, const IntrusivePtr< U > &rhs) noexcept
Contract< V, E > MakeContract()
Creates related future and promise.