|
Celeritas 0.7.0-33+develop.9c828abdd
|
Type-safe non-owning pointer. More...
#include <ObserverPtr.hh>
Public Member Functions | |
| constexpr | operator bool () const noexcept |
| True unless nullptr. | |
| constexpr pointer | get () const noexcept |
| constexpr | operator pointer () const noexcept |
| constexpr reference | operator* () const noexcept |
| constexpr pointer | operator-> () const noexcept |
| constexpr reference | operator[] (std::size_t i) const noexcept |
| constexpr pointer | release () noexcept |
| constexpr void | reset (pointer ptr=nullptr) noexcept |
| constexpr void | swap (ObserverPtr &other) noexcept |
Friends | |
Comparators | |
| template<class T2 > | |
| constexpr friend bool | operator== (ObserverPtr lhs, ObserverPtr< T2, M > rhs) noexcept |
| template<class T2 > | |
| constexpr friend bool | operator!= (ObserverPtr lhs, ObserverPtr< T2, M > rhs) noexcept |
| template<class T2 > | |
| constexpr friend bool | operator< (ObserverPtr lhs, ObserverPtr< T2, M > rhs) noexcept |
| template<class T2 > | |
| constexpr friend bool | operator> (ObserverPtr lhs, ObserverPtr< T2, M > rhs) noexcept |
| template<class T2 > | |
| constexpr friend bool | operator<= (ObserverPtr lhs, ObserverPtr< T2, M > rhs) noexcept |
| template<class T2 > | |
| constexpr friend bool | operator>= (ObserverPtr lhs, ObserverPtr< T2, M > rhs) noexcept |
| constexpr friend bool | operator== (ObserverPtr const &lhs, std::nullptr_t) noexcept |
| constexpr friend bool | operator!= (ObserverPtr const &lhs, std::nullptr_t) noexcept |
| constexpr friend bool | operator== (std::nullptr_t, ObserverPtr const &rhs) noexcept |
| constexpr friend bool | operator!= (std::nullptr_t, ObserverPtr const &rhs) 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 , std::enable_if_t< std::is_convertible_v< T2 *, T * >, bool > = true> | |
| constexpr | ObserverPtr (ObserverPtr< T2, M > other) noexcept |
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. (See ObserverPtr.device.hh to convert between device_ptr and ObserverPtr .)
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. However, the pointer itself can be accessed directly via get or explicitly casting to the pointer type. Members of observerptr structs can be accessed using a special make_observer overload.
| using celeritas::ObserverPtr< T, M >::element_type = T |
Construct a pointer
| using celeritas::ObserverPtr< T, M >::pointer = std::add_pointer_t<T> |
Construct a pointer
| using celeritas::ObserverPtr< T, M >::reference = std::add_lvalue_reference_t<T> |
Construct a pointer
|
constexprdefaultnoexcept |
Construct a pointer
|
inlineconstexprnoexcept |
Construct a pointer
|
inlineexplicitconstexprnoexcept |
Construct a pointer
|
inlineconstexprnoexcept |
Construct a pointer
|
inlineconstexprnoexcept |
Access the pointer without checking
|
inlineexplicitconstexprnoexcept |
Access the pointer without checking
|
inlineconstexprnoexcept |
Access the pointed-to data from the native memspace
|
inlineconstexprnoexcept |
Access the pointed-to data from the native memspace
|
inlineconstexprnoexcept |
Access the pointed-to data from the native memspace
|
inlineconstexprnoexcept |
Modify the pointer
|
inlineconstexprnoexcept |
Modify the pointer
|
inlineconstexprnoexcept |
Modify the pointer