19 #ifndef LIB_CS_WEAK_POINTER_H
20 #define LIB_CS_WEAK_POINTER_H
22 #include <cs_shared_pointer.h>
73 explicit operator bool() const noexcept {
82 return m_ptr.expired();
90 return m_ptr.expired();
95 return m_ptr.owner_before(p.m_ptr);
100 return m_ptr.owner_before(p.m_ptr);
108 std::swap(m_ptr, other.m_ptr);
116 return m_ptr.use_count();
119 template <
typename U>
121 return this->
owner_before(ptr) ==
false && ptr.owner_before(*
this) ==
false;
124 template <
typename U>
125 bool operator==(
const CsSharedPointer<U> &ptr)
const noexcept {
126 return this->
owner_before(ptr) ==
false && ptr.owner_before(*
this) ==
false;
129 bool operator==(std::nullptr_t)
const noexcept {
134 std::weak_ptr<T> m_ptr;
136 template <
typename U>
137 friend class CsSharedPointer;
139 template <
typename U>
140 friend class CsWeakPointer;
143 template <
typename T>
144 void swap(CsWeakPointer<T> &ptr1, CsWeakPointer<T> &ptr2)
noexcept
long use_count() const noexcept
Definition: cs_weak_pointer.h:115
bool operator==(const CsWeakPointer< T1 > &ptr1, const CsSharedPointer< T2 > &ptr2)
CsSharedPointer< T > toStrongRef() const noexcept
Definition: cs_weak_pointer.h:111
void swap(CsWeakPointer &other) noexcept
Definition: cs_weak_pointer.h:107
void reset() noexcept
Definition: cs_weak_pointer.h:103
bool owner_before(const CsWeakPointer< U > &p) const noexcept
Definition: cs_weak_pointer.h:99
CsSharedPointer< T > lock() const noexcept
Definition: cs_weak_pointer.h:85
bool expired() const noexcept
Definition: cs_weak_pointer.h:81
void clear() noexcept
Definition: cs_weak_pointer.h:77
bool is_null() const noexcept
Definition: cs_weak_pointer.h:89
CsWeakPointer & operator=(const CsSharedPointer< U > &p) noexcept
Definition: cs_weak_pointer.h:63
CsWeakPointer & operator=(const CsWeakPointer &other) = default
bool operator!() const
Definition: cs_weak_pointer.h:69
~CsWeakPointer() = default
Stores a pointer to a potentially shared object.
Definition: cs_shared_pointer.h:34
CsWeakPointer(const CsSharedPointer< U > &p) noexcept
Definition: cs_weak_pointer.h:49
Stores a weak pointer to a potentially shared object.
Definition: cs_shared_pointer.h:31
CsWeakPointer(const CsWeakPointer< U > &p) noexcept
Definition: cs_weak_pointer.h:43
CsWeakPointer()
Definition: cs_weak_pointer.h:38
element_type ElementType
Definition: cs_weak_pointer.h:36
pointer Pointer
Definition: cs_weak_pointer.h:35
bool owner_before(const CsSharedPointer< U > &p) const noexcept
Definition: cs_weak_pointer.h:94
element_type * pointer
Definition: cs_weak_pointer.h:33
typename std::weak_ptr< T >::element_type element_type
Definition: cs_weak_pointer.h:32
Namespace for the CsPointer library.