template<typename T>
class pw::WeakPtr< T >
A std::weak_ptr<T>-like type that integrates with pw::SharedPtr.
- Template Parameters
-
| T | The type being pointed to. This may be an array type, e.g. pw::WeakPtr<T[]>. |
|
|
constexpr | WeakPtr () noexcept=default |
| | Creates an empty (nullptr) instance.
|
| |
|
constexpr | WeakPtr (std::nullptr_t) noexcept |
| | Creates an empty (nullptr) instance.
|
| |
|
| WeakPtr (const WeakPtr &other) noexcept |
| | Copy-constructs a WeakPtr<T> from a WeakPtr<T>.
|
| |
| template<typename U , typename = std::enable_if_t<std::is_assignable_v<T*&, U*>>> |
| | WeakPtr (const WeakPtr< U > &other) noexcept |
| |
| template<typename U , typename = std::enable_if_t<std::is_assignable_v<T*&, U*>>> |
| | WeakPtr (const SharedPtr< U > &other) noexcept |
| |
| template<typename U , typename = std::enable_if_t<std::is_assignable_v<T*&, U*>>> |
| | WeakPtr (WeakPtr< U > &&other) noexcept |
| |
|
constexpr WeakPtr & | operator= (const WeakPtr &other) noexcept |
| | Copy-assigns a WeakPtr<T> from a WeakPtr<T>.
|
| |
| template<typename U , typename = std::enable_if_t<std::is_assignable_v<T*&, U*>>> |
| WeakPtr & | operator= (const WeakPtr< U > &other) noexcept |
| |
| template<typename U , typename = std::enable_if_t<std::is_assignable_v<T*&, U*>>> |
| WeakPtr & | operator= (const SharedPtr< U > &other) noexcept |
| |
| template<typename U , typename = std::enable_if_t<std::is_assignable_v<T*&, U*>>> |
| WeakPtr & | operator= (WeakPtr< U > &&other) noexcept |
| |
| template<typename U , typename = std::enable_if_t<std::is_assignable_v<T*&, U*>>> |
| constexpr | operator const WeakPtr< U > & () const |
| |
| void | reset () noexcept |
| |
|
void | swap (WeakPtr &other) noexcept |
| | Swaps the managed pointer and deallocator of this and another object.
|
| |
| int32_t | use_count () const noexcept |
| |
| bool | expired () const noexcept |
| |
| SharedPtr< T > | Lock () const noexcept |
| |
| template<typename PtrType > |
| bool | owner_before (const PtrType &other) const noexcept |
| |
|
template<typename U , typename > |
| WeakPtr< T > & | operator= (const WeakPtr< U > &other) noexcept |
| |
|
template<typename U , typename > |
| WeakPtr< T > & | operator= (const SharedPtr< U > &other) noexcept |
| |
|
template<typename U , typename > |
| WeakPtr< T > & | operator= (WeakPtr< U > &&other) noexcept |
| |
template<typename T >
template<typename U , typename = std::enable_if_t<std::is_assignable_v<T*&, U*>>>
Move-constructs a SharedPtr<T> from a SharedPtr<U>.
This allows not only pure move construction where T == U, but also converting construction where T is a base class of U, like SharedPtr<Base> base(deallocator.MakeShared<Child>());.