Non-owning observer of a Shared control block. More...
#include <StormByte/safe_pointers.hxx>
Public Types | |
| using | element_type = T |
| Pointee type. | |
Public Member Functions | |
| Weak () noexcept=default | |
| Empty observer. | |
| Weak (std::nullptr_t) noexcept | |
Empty observer from nullptr. | |
| template<class U > requires Type::SameAs<U, T> || Type::DerivedFrom<U, T> | |
| Weak (const Shared< U > &owner) noexcept | |
Observe owner. | |
| Weak (const Weak &) noexcept=default | |
| Copy constructor. | |
| Weak (Weak &&) noexcept=default | |
| Move constructor. | |
| Weak & | operator= (const Weak &) noexcept=default |
| Copy assignment. | |
| Weak & | operator= (Weak &&) noexcept=default |
| Move assignment. | |
| ~Weak ()=default | |
| Destructor. | |
| Shared< T > | lock () const noexcept |
| Lock the control block. | |
| bool | expired () const noexcept |
| Whether the object is already gone. | |
| long | use_count () const noexcept |
| Number of Shared still holding the object. | |
| void | reset () noexcept |
| Drop this observer. | |
| void | swap (Weak &other) noexcept |
Exchange observers with other. | |
| template<class U > | |
| bool | owner_before (const Weak< U > &other) const noexcept |
Ownership order, same as std::weak_ptr::owner_before. | |
| template<class U > | |
| bool | owner_before (const Shared< U > &other) const noexcept |
| Ownership order against a Shared. | |
Friends | |
| template<class U > | |
| class | Weak |
| template<class U > | |
| class | Shared |
| void | swap (Weak &left, Weak &right) noexcept |
Exchange left and right. | |
Non-owning observer of a Shared control block.
| T | Pointee type. |
Complements std::weak_ptr. It does not replace it. Construct it only from a Shared. lock returns a Shared, or an empty owner when the object is gone. There is no constructor from std::weak_ptr.
| using StormByte::Weak< T >::element_type = T |
Pointee type.
|
defaultnoexcept |
Empty observer.
|
inlinenoexcept |
Empty observer from nullptr.
|
inlinenoexcept |
Observe owner.
| U | Pointee convertible to T. |
| owner | Owner to watch. |
|
defaultnoexcept |
Copy constructor.
|
defaultnoexcept |
Move constructor.
|
default |
Destructor.
|
inlinenoexcept |
Whether the object is already gone.
true when lock would return empty.
|
inlinenoexcept |
Lock the control block.
|
defaultnoexcept |
Copy assignment.
*this.
|
defaultnoexcept |
Move assignment.
*this.
|
inlinenoexcept |
Ownership order against a Shared.
| U | Other pointee. |
| other | Owner. |
other.
|
inlinenoexcept |
Ownership order, same as std::weak_ptr::owner_before.
| U | Other pointee. |
| other | Other observer. |
other.
|
inlinenoexcept |
Drop this observer.
|
inlinenoexcept |
Exchange observers with other.
| other | Other observer. |
|
inlinenoexcept |
Number of Shared still holding the object.
0 when expired. Exchange left and right.
| left | Observer. |
| right | Observer. |