27 class pointer :
public std::shared_ptr<std::remove_reference_t<T>>
29 using ptr_t = std::add_pointer_t<std::remove_all_extents_t<T>>;
30 using base_type = std::shared_ptr<std::remove_reference_t<T>>;
37 if(managed) this->reset(ptr);
52 auto del = std::get_deleter<decltype(empty_delete)>(*
this);
Pointer wrapper that takes handle both shared as well as regular (unmanaged) pointers.
Definition: pointer.h:28
constexpr pointer(const std::shared_ptr< Y > &ptr) noexcept
Definition: pointer.h:43
static constexpr auto empty_delete
Definition: pointer.h:31
std::shared_ptr< std::remove_reference_t< T > > base_type
Definition: pointer.h:30
constexpr bool is_managed(void) const
Returns true if the pointer manages the object deallocation.
Definition: pointer.h:50
constexpr pointer(ptr_t ptr=nullptr, bool managed=false) noexcept
Init from a regular pointer.
Definition: pointer.h:35
constexpr pointer(std::shared_ptr< Y > &&ptr) noexcept
Definition: pointer.h:46
std::add_pointer_t< std::remove_all_extents_t< T > > ptr_t
Definition: pointer.h:29
Definition: aggregatebsdf.h:29
produce stringview of type name of a type. Avoids using typeid for GCC, MSVC, and CLANG....