Skip to content

iox::cxx::unique_ptr🔗

The unique_ptr class is a heap-less unique ptr implementation, unlike the STL. More...

#include <unique_ptr.hpp>

Public Functions🔗

Name
unique_ptr()
unique_ptr(function_ref< void(T *)> && deleter)
unique_ptr Creates an empty unique ptr that owns nothing. Can be passed ownership later via reset.
unique_ptr(T const ptr, function_ref< void(T )> && deleter)
unique_ptr Creates a unique pointer that takes ownership of an object.
unique_ptr(const unique_ptr & other)
unique_ptr & operator=(const unique_ptr & )
unique_ptr(unique_ptr && rhs)
unique_ptr & operator=(unique_ptr && rhs)
~unique_ptr()
unique_ptr< T > & operator=(std::nullptr_t )
T * operator->()
operator -> Transparent access to the managed object.
const T * operator->() const
operator -> Transparent access to the managed object.
operator bool() const
operator bool Returns true if it points to something.
T * get()
get Retrieve the underlying raw pointer.
const T * get() const
get Retrieve the underlying raw pointer.
T * release()
release Release ownership of the underlying pointer.
void reset(T *const ptr =nullptr)
reset Reset the unique pointer to take ownership of the given pointer.
void swap(unique_ptr & other)
swap Swaps object ownership with another unique_ptr (incl. deleters)

Detailed Description🔗

template <typename T >
class iox::cxx::unique_ptr;

The unique_ptr class is a heap-less unique ptr implementation, unlike the STL.

To avoid using the heap, deleters are not managed by the pointer itself, and instead must be provided as function references ('cxx:function_ref'). The functions must exist at least as long as the pointers that use them.

Also unlike the STL implementation, the deleters are not encoded in the unique_ptr type, allowing unique_ptr instances with different deleters to be stored in the same containers.

Public Functions Documentation🔗

function unique_ptr🔗

unique_ptr()

function unique_ptr🔗

unique_ptr(
    function_ref< void(T *)> && deleter
)

unique_ptr Creates an empty unique ptr that owns nothing. Can be passed ownership later via reset.

function unique_ptr🔗

unique_ptr(
    T *const ptr,
    function_ref< void(T *)> && deleter
)

unique_ptr Creates a unique pointer that takes ownership of an object.

Parameters:

  • ptr The raw pointer to the object to be managed.
  • deleter The deleter function for cleaning up the managed object. As cxx:function_ref used for the deleter is non-owning the user needs to care about the lifetime of the callable!

A deleter must always be provided as no default can be provided given that no heap is used. The unique_ptr must know how to delete the managed object when the pointer goes out of scope.

function unique_ptr🔗

unique_ptr(
    const unique_ptr & other
)

function operator=🔗

unique_ptr & operator=(
    const unique_ptr & 
)

function unique_ptr🔗

unique_ptr(
    unique_ptr && rhs
)

function operator=🔗

unique_ptr & operator=(
    unique_ptr && rhs
)

function ~unique_ptr🔗

~unique_ptr()

Automatically deletes the managed object on destruction.

function operator=🔗

unique_ptr< T > & operator=(
    std::nullptr_t 
)

function operator->🔗

T * operator->()

operator -> Transparent access to the managed object.

Return:

function operator->🔗

const T * operator->() const

operator -> Transparent access to the managed object.

Return:

function operator bool🔗

explicit operator bool() const

operator bool Returns true if it points to something.

function get🔗

T * get()

get Retrieve the underlying raw pointer.

Return: Pointer to managed object or nullptr if none owned.

The unique_ptr retains ownership, therefore the "borrowed" pointer must not be deleted.

function get🔗

const T * get() const

get Retrieve the underlying raw pointer.

Return: Pointer to managed object or nullptr if none owned.

The unique_ptr retains ownership, therefore the "borrowed" pointer must not be deleted.

function release🔗

T * release()

release Release ownership of the underlying pointer.

Return: Pointer to the managed object or nullptr if none owned.

function reset🔗

void reset(
    T *const ptr =nullptr
)

reset Reset the unique pointer to take ownership of the given pointer.

Parameters:

  • ptr Pointer to object to take ownership on.

Any previously owned objects will be deleted. If no pointer given then points to nullptr.

function swap🔗

void swap(
    unique_ptr & other
)

swap Swaps object ownership with another unique_ptr (incl. deleters)

Parameters:

  • other The unique_ptr with which to swap owned objects.

Updated on 31 May 2022 at 15:29:15 CEST