18 static_assert(std::is_base_of_v<IRef, T>,
"T must be derived class of IRef");
70template <
typename T,
typename U>
72 return lhs.Get() !=
rhs.Get();
75template <
typename T,
typename U>
80template <
typename T,
typename U>
85template <
typename T,
typename U>
90template <
typename T,
typename U>
97 return lhs.Get() ==
nullptr;
102 return rhs.Get() ==
nullptr;
107 return lhs.Get() !=
nullptr;
112 return rhs.Get() !=
nullptr;
117 return lhs.Get() <
rhs.Get();
A intrusive pointer to objects with an embedded reference count.
friend class IntrusivePtr
void Reset(NoRefTag, T *other) noexcept
void Swap(IntrusivePtr &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.