BloombergLP::bslma::ManagedPtr_Members

This class provides a type-agnostic container for managed pointer data members. This type exists so that a ManagedPtr_Ref (see bslma_managedptr) can point to the representation of a ManagedPtr even if the ManagedPtr_Ref object is instantiated on a different type than the managed pointer type (e.g., in the case of conversions or aliasing). ManagedPtr_Members also "erases" the type of each member, so that the same object code can be shared between all instantiations of the ManagedPtr class template, reducing template bloat. Note that objects of this type have an "unset" state, where the pointer member has a null value and the deleter member has an unspecified value.

Synopsis

Declared in <bslma_managedptr_members.h>

class ManagedPtr_Members;

Member Functions

NameDescription
ManagedPtr_Members [constructor]Constructors
clear Reset this object to an unset state with no effect on the previously managed object (if any).
deleter Return a reference providing non-modifiable access to the deleter used to destroy the currently managed object (if any). The behavior is undefined unless pointer is not null.
move Reset this object to have the same pointer as the specified other object, and, if 0 != other->pointer(), the same deleter as other, then put other into an unset state. This method has no effect on the previously managed object (if any). The behavior is undefined unless this != other.
moveAssign Destroy the currently managed object (if any), reset this object to have the same pointer as the specified other object, and, if 0 != other->pointer(), the same deleter as other, then put other into an unset state. This method has no effect if this == other.
pointer Return the address providing modifiable access to the currently managed object, or 0 if this object is in an unset state. Note that the returned pointer may be an alias to the managed object.
runDeleter Destroy the currently managed object (if any). Note that calling this method twice on an object that is not in an unset state, without assigning a new pointer to manage between the two calls, results in undefined behavior unless this object's deleter specifically supports such usage.
set Reset this object to have the specified object, factory, and deleter with no effect on the previously managed object (if any). The object does not manage a pointer if 0 == object. The behavior is undefined unless object is null if deleter is null.
setAliasPtr Set pointer to have the specified alias. If 0 == alias, then this object will have an unset state with no effect on the previously managed object (if any). The behavior is undefined unless 0 == pointer() if and only if 0 == alias.
swap Efficiently exchange the state of this object with the state of the specified other object. This method provides the no-throw exception-safety guarantee. Note that if either object is in an unset state, then the only guarantee about the unset state that may be exchanged is that the pointer value shall be null.