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>());
.