Celeritas 0.7.0-dev.245+develop.a7be925e
Loading...
Searching...
No Matches
List of all members
celeritas::ObserverPtr< T, M > Class Template Reference

Type-safe non-owning pointer. More...

#include <ObserverPtr.hh>

Public Member Functions

constexpr pointer get () const noexcept
 
constexpr reference operator* () const noexcept
 
constexpr pointer operator-> () const noexcept
 
constexpr operator pointer () const noexcept
 
constexpr operator bool () const noexcept
 
constexpr pointer release () noexcept
 
constexpr void reset (pointer ptr=nullptr) noexcept
 
constexpr void swap (ObserverPtr &other) noexcept
 

Type aliases

using element_type = T
 
using pointer = std::add_pointer_t< T >
 
using reference = std::add_lvalue_reference_t< T >
 
constexpr ObserverPtr () noexcept=default
 
constexpr ObserverPtr (std::nullptr_t) noexcept
 
constexpr ObserverPtr (pointer ptr) noexcept
 
template<class T2 >
constexpr ObserverPtr (ObserverPtr< T2, M > other) noexcept
 

Detailed Description

template<class T, MemSpace M = MemSpace::native>
class celeritas::ObserverPtr< T, M >

Type-safe non-owning pointer.

This class is based on WG21 N4282, "A Proposal for the World’s Dumbest Smart Pointer, v4". It adds memspace safety similar to Thrust's host/device_ptr.

The dereferencing operators can only be used from the "native" memspace: i.e., host data can be accessed from a .cc file, and device data from a .cu file.

A manual pointer cast function can be used to access the pointer with no memspace checking.

Member Typedef Documentation

◆ element_type

template<class T , MemSpace M = MemSpace::native>
using celeritas::ObserverPtr< T, M >::element_type = T

Construct a pointer

◆ pointer

template<class T , MemSpace M = MemSpace::native>
using celeritas::ObserverPtr< T, M >::pointer = std::add_pointer_t<T>

Construct a pointer

◆ reference

template<class T , MemSpace M = MemSpace::native>
using celeritas::ObserverPtr< T, M >::reference = std::add_lvalue_reference_t<T>

Construct a pointer

Constructor & Destructor Documentation

◆ ObserverPtr() [1/4]

template<class T , MemSpace M = MemSpace::native>
constexpr celeritas::ObserverPtr< T, M >::ObserverPtr ( )
constexprdefaultnoexcept

Construct a pointer

◆ ObserverPtr() [2/4]

template<class T , MemSpace M = MemSpace::native>
constexpr celeritas::ObserverPtr< T, M >::ObserverPtr ( std::nullptr_t  )
inlineconstexprnoexcept

Construct a pointer

◆ ObserverPtr() [3/4]

template<class T , MemSpace M = MemSpace::native>
constexpr celeritas::ObserverPtr< T, M >::ObserverPtr ( pointer  ptr)
inlineexplicitconstexprnoexcept

Construct a pointer

◆ ObserverPtr() [4/4]

template<class T , MemSpace M = MemSpace::native>
template<class T2 >
constexpr celeritas::ObserverPtr< T, M >::ObserverPtr ( ObserverPtr< T2, M other)
inlineconstexprnoexcept

Construct a pointer

Member Function Documentation

◆ get()

template<class T , MemSpace M = MemSpace::native>
constexpr pointer celeritas::ObserverPtr< T, M >::get ( ) const
inlineconstexprnoexcept

Access the pointer

◆ operator bool()

template<class T , MemSpace M = MemSpace::native>
constexpr celeritas::ObserverPtr< T, M >::operator bool ( ) const
inlineexplicitconstexprnoexcept

Access the pointer

◆ operator pointer()

template<class T , MemSpace M = MemSpace::native>
constexpr celeritas::ObserverPtr< T, M >::operator pointer ( ) const
inlineexplicitconstexprnoexcept

Access the pointer

◆ operator*()

template<class T , MemSpace M = MemSpace::native>
constexpr reference celeritas::ObserverPtr< T, M >::operator* ( ) const
inlineconstexprnoexcept

Access the pointer

◆ operator->()

template<class T , MemSpace M = MemSpace::native>
constexpr pointer celeritas::ObserverPtr< T, M >::operator-> ( ) const
inlineconstexprnoexcept

Access the pointer

◆ release()

template<class T , MemSpace M = MemSpace::native>
constexpr pointer celeritas::ObserverPtr< T, M >::release ( )
inlineconstexprnoexcept

Modify the pointer

◆ reset()

template<class T , MemSpace M = MemSpace::native>
constexpr void celeritas::ObserverPtr< T, M >::reset ( pointer  ptr = nullptr)
inlineconstexprnoexcept

Modify the pointer

◆ swap()

template<class T , MemSpace M = MemSpace::native>
constexpr void celeritas::ObserverPtr< T, M >::swap ( ObserverPtr< T, M > &  other)
inlineconstexprnoexcept

Modify the pointer


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