Kanzi 4.0.0-beta2
kanzi::SharedLockedPtr< T, M > Class Template Reference

Represents a thread-safe read-only pointer to T. More...

#include <kanzi/core/util/shared_locked_ptr.hpp>

Public Member Functions

KZ_NO_DISCARD operator bool () const noexcept
 Conversion operator to bool.
 
KZ_NO_DISCARD T && operator* () &&noexcept=delete
 Provides access to stored object via rvalue reference.
 
KZ_NO_DISCARD Toperator* () &noexcept
 Provides access to stored object via reference.
 
KZ_NO_DISCARD const T && operator* () const &&noexcept=delete
 Provides access to stored object via const rvalue reference.
 
KZ_NO_DISCARD const Toperator* () const &noexcept
 Provides access to stored object via const reference.
 
const Toperator-> () const noexcept
 Provides access to T through const pointer.
 
Toperator-> () noexcept
 Provides access to T through pointer.
 
 SharedLockedPtr () noexcept=default
 Constructor.
 
 SharedLockedPtr (shared_lock< M > &&lock, T *ptr) noexcept
 Constructor.
 

Detailed Description

template<typename T, typename M = shared_mutex>
class kanzi::SharedLockedPtr< T, M >

Represents a thread-safe read-only pointer to T.

Precondition
M satisfies SharedLockable C++ named requirement.
Template Parameters
TObject type.
MMutex type.
Parameters
mutexMutex used to create a shared lock.
ptrPointer to T.
Since
Kanzi 4.0.0

Constructor & Destructor Documentation

◆ SharedLockedPtr() [1/2]

template<typename T , typename M = shared_mutex>
kanzi::SharedLockedPtr< T, M >::SharedLockedPtr ( )
explicitdefaultnoexcept

Constructor.

◆ SharedLockedPtr() [2/2]

template<typename T , typename M = shared_mutex>
kanzi::SharedLockedPtr< T, M >::SharedLockedPtr ( shared_lock< M > && lock,
T * ptr )
inlineexplicitnoexcept

Constructor.

Parameters
lockShared lock that guards the pointer.
ptrPointer to store.

Member Function Documentation

◆ operator->() [1/2]

template<typename T , typename M = shared_mutex>
T * kanzi::SharedLockedPtr< T, M >::operator-> ( )
inlinenoexcept

Provides access to T through pointer.

◆ operator->() [2/2]

template<typename T , typename M = shared_mutex>
const T * kanzi::SharedLockedPtr< T, M >::operator-> ( ) const
inlinenoexcept

Provides access to T through const pointer.

◆ operator*() [1/4]

template<typename T , typename M = shared_mutex>
KZ_NO_DISCARD T & kanzi::SharedLockedPtr< T, M >::operator* ( ) &
inlinenoexcept

Provides access to stored object via reference.

Returns
Reference to stored object.

◆ operator*() [2/4]

template<typename T , typename M = shared_mutex>
KZ_NO_DISCARD const T & kanzi::SharedLockedPtr< T, M >::operator* ( ) const &
inlinenoexcept

Provides access to stored object via const reference.

Returns
Const reference to stored object.

◆ operator*() [3/4]

template<typename T , typename M = shared_mutex>
KZ_NO_DISCARD T && kanzi::SharedLockedPtr< T, M >::operator* ( ) &&
deletenoexcept

Provides access to stored object via rvalue reference.

Returns
Rvalue reference to stored object.

◆ operator*() [4/4]

template<typename T , typename M = shared_mutex>
KZ_NO_DISCARD const T && kanzi::SharedLockedPtr< T, M >::operator* ( ) const &&
deletenoexcept

Provides access to stored object via const rvalue reference.

Returns
Const rvalue reference to stored object.

◆ operator bool()

template<typename T , typename M = shared_mutex>
KZ_NO_DISCARD kanzi::SharedLockedPtr< T, M >::operator bool ( ) const
inlineexplicitnoexcept

Conversion operator to bool.

Returns
If holds a valid pointer, true, otherwise false.

The documentation for this class was generated from the following file: