Smart pointer with sole ownership of a managed object and a possibly distinct target.

Synopsis

Declared in <bslma_managedptr.h>

template<class TARGET_TYPE>
class ManagedPtr;

Description

This class is a "smart pointer" that refers to a target object accessed via a pointer to the specified parameter type, TARGET_TYPE, and that supports sole ownership of a managed object that is potentially of a different type, and may be an entirely different object from the target object. A managed pointer ensures that the object it manages is destroyed when the managed pointer is destroyed (or re‐assigned), using the "deleter" supplied along with the managed object. The target object referenced by a managed pointer may be accessed using either the ‐> operator, or the dereference operator (operator *). The specified TARGET_TYPE may be const‐qualified, but may not be volatile‐qualified, nor may it be a reference type.

A managed pointer may be empty, in which case it neither refers to a target object nor owns a managed object. An empty managed pointer is the equivalent of a null pointer: Such a managed pointer is not de‐referenceable, and tests as false in boolean expressions.

A managed pointer for which the managed object is not the same object as the target is said to alias the managed object (see the section "Aliasing" in the component‐level documentation).

Type Aliases

Name

Description

DeleterFunc

Alias for a function‐pointer type for functions used to destroy the object managed by a ManagedPtr object.

element_type

Alias to the TARGET_TYPE template parameter.

Member Functions

Name

Description

ManagedPtr [constructor]

Constructors

~ManagedPtr [destructor]

Destroy this managed pointer and its managed object (if any).

operator=

Assignment operators

clear

Destroy the current managed object (if any) and reset this managed pointer to empty.

deleter

Return a reference to the non‐modifiable deleter information associated with this managed pointer. The behavior is undefined if this managed pointer is empty.

get

Return the address of the target object, or 0 if this managed pointer is empty.

load

load overloads

loadAlias

Retarget or transfer ownership using the aliasing pointer alias.

operator*

Return a reference to the target object. The behavior is undefined if this managed pointer is empty, or if TARGET_TYPE is void or const void.

operator‐>

Return the address of the target object, or 0 if this managed pointer is empty.

ptr

Return the address of the target object, or 0 if this managed pointer is empty.

release

release overloads

reset

Destroy the current managed object (if any) and reset this managed pointer to empty.

swap

Exchange the value and ownership of this managed pointer with other.

operator BoolType

Return whether this managed pointer is non‐empty.

operator ManagedPtr_Ref<REFERENCED_TYPE>

Return a managed‐pointer reference to this object.

operator==

Return true if this managed pointer is empty, and false otherwise.

operator!=

Return false if this managed pointer is empty, and true otherwise.

Specializations

Name

Description

ManagedPtr<TARGET_TYPE volatile>

Incomplete specialization that rejects ManagedPtr to volatile types.

ManagedPtr<TARGET_TYPE&>

Incomplete specialization that rejects ManagedPtr to reference types.

ManagedPtr<TARGET_TYPE&&>

Incomplete specialization that rejects ManagedPtr to rvalue references.

Friends

Name

Description

BloombergLP::bslma::ManagedPtr

Smart pointer with sole ownership of a managed object and a possibly distinct target.

Non-Member Functions

Name

Description

swap

Efficiently exchange the values of the specified a and b objects. This function provides the no‐throw exception‐safety guarantee.

Created with MrDocs