|
BDE 4.14.0 Production release
|
#include <bslstl_sharedptr.h>
Public Member Functions | |
| bsl::shared_ptr< ELEMENT_TYPE > | shared_from_this () |
| bsl::weak_ptr< ELEMENT_TYPE > | weak_from_this () BSLS_KEYWORD_NOEXCEPT |
| bsl::shared_ptr< const ELEMENT_TYPE > | shared_from_this () const |
| bsl::weak_ptr< const ELEMENT_TYPE > | weak_from_this () const BSLS_KEYWORD_NOEXCEPT |
Protected Member Functions | |
| enable_shared_from_this () BSLS_KEYWORD_NOEXCEPT | |
| enable_shared_from_this (const enable_shared_from_this &unused) BSLS_KEYWORD_NOEXCEPT | |
| ~enable_shared_from_this () | |
Destroy this enable_shared_form_this. | |
| enable_shared_from_this & | operator= (const enable_shared_from_this &rhs) BSLS_KEYWORD_NOEXCEPT |
Friends | |
| struct | BloombergLP::bslstl::SharedPtr_ImpUtil |
This class allows an object that is currently managed by a shared_ptr to safely generate a copy of the managing shared_ptr object. Inheriting from enable_shared_from_this<ELEMENT_TYPE> provides the (template parameter) ELEMENT_TYPE type with a member function shared_from_this. If an object of type ELEMENT_TYPE is managed by a shared_ptr then calling shared_from_this will return a shared_ptr<ELEMENT_TYPE> that shares ownership of that object. It is undefined behavior to call shared_from_this on an object unless that object is managed by a shared_ptr.
The intended use of enable_shared_from_this is that the (template parameter) type ELEMENT_TYPE inherits directly from the enable_shared_from_this class template. In the case of multiple inheritance, only one of the base classes should inherit from the enable_shared_from_this class template. If multiple base classes inherit from enable_shared_from_this, then there will be ambiguous calls to the shared_from_this function.
See bslstl_sharedptr
|
inlineprotected |
Create an enable_shared_from_this object that is not owned by any shared_ptr object.
|
inlineprotected |
Create an enable_shared_from_this object that is not owned by any shared_ptr object. Note that the specified unused argument is not used by this constructor.
|
inlineprotected |
|
inlineprotected |
Return *this. This object is unchanged. Note that the specified rhs is not used.
|
inline |
Return a shared_ptr<ELEMENT_TYPE> that shares ownership with an existing shared_ptr object that managed this object, and throw a std::bad_weak_ptr exception if there is no shared_ptr currently managing this object. If multiple groups of shared_ptrs are managing this object, the returned shared_ptr will share ownership with the group that first managed this object.
|
inline |
Return a shared_ptr<const ELEMENT_TYPE> that shares ownership with an existing shared_ptr object that managed this object, and throw a std::bad_weak_ptr exception if there is no shared_ptr currently managing this object. If multiple groups of shared_ptrs are managing this object, the returned shared_ptr will share ownership with the group that first managed this object.
|
inline |
Return a weak_ptr holding a weak reference to this managed object if this object is currently managed by shared_ptr, and return an expired weak_ptr otherwise. If multiple groups of shared_ptrs are managing this object, the returned weak_ptr will hold a weak reference to the group that first managed this object.
|
inline |
Return a weak_ptr holding a weak reference (with only const access) to this managed object if this object is currently managed by shared_ptr, and return an expired weak_ptr otherwise. If multiple groups of shared_ptrs are managing this object, the returned weak_ptr will hold a weak reference to the group that first managed this object.
|
friend |
Allows shared_ptr to initialize d_weakThis when it detects an enable_shared_from_this base class.