8#pragma GCC diagnostic push
9#pragma GCC diagnostic ignored "-Wuse-after-free"
10#pragma GCC diagnostic ignored "-Wfree-nonheap-object"
24template<
typename T,
typename Tag>
56 m_pointer = other.release();
61 constexpr explicit operator bool()
const {
return !!
get(); }
65 constexpr auto get() const -> T* {
return m_pointer; }
89 return a.get() == b.get();
92 return a.get() <=> b.get();
95 T* m_pointer {
nullptr };
100#pragma GCC diagnostic pop
Definition intrusive_ptr.h:25
constexpr friend auto operator==(IntrusivePtr const &a, IntrusivePtr const &b) -> bool
Definition intrusive_ptr.h:88
constexpr IntrusivePtr(IntrusivePtr &&other)
Definition intrusive_ptr.h:31
constexpr auto operator*() const -> T &
Definition intrusive_ptr.h:63
constexpr auto operator=(nullptr_t) -> IntrusivePtr &
Definition intrusive_ptr.h:43
constexpr auto operator->() const -> T *
Definition intrusive_ptr.h:64
constexpr IntrusivePtr(nullptr_t)
Definition intrusive_ptr.h:28
constexpr IntrusivePtr(IntrusivePtr const &other)
Definition intrusive_ptr.h:30
constexpr IntrusivePtr(T *pointer, RetainObject)
Definition intrusive_ptr.h:33
constexpr auto operator=(IntrusivePtr const &other) -> IntrusivePtr &
Definition intrusive_ptr.h:47
constexpr auto release() -> T *
Definition intrusive_ptr.h:67
constexpr void reset()
Definition intrusive_ptr.h:69
constexpr void reset(T *pointer, RetainObject)
Definition intrusive_ptr.h:75
constexpr void reset(T *pointer, AdoptObject)
Definition intrusive_ptr.h:79
constexpr IntrusivePtr(T *pointer, AdoptObject)
Definition intrusive_ptr.h:36
constexpr auto get() const -> T *
Definition intrusive_ptr.h:65
constexpr friend auto operator<=>(IntrusivePtr const &a, IntrusivePtr const &b) -> di::strong_ordering
Definition intrusive_ptr.h:91
constexpr ~IntrusivePtr()
Definition intrusive_ptr.h:41
constexpr IntrusivePtr()
Definition intrusive_ptr.h:27
constexpr auto operator=(IntrusivePtr &&other) -> IntrusivePtr &
Definition intrusive_ptr.h:53
Definition intrusive_ptr_cpo.h:30
std::nullptr_t nullptr_t
Definition nullptr_t.h:12
constexpr auto exchange(T &object, U &&new_value) -> T
Definition exchange.h:8
constexpr auto adopt_object
Definition intrusive_ptr.h:22
constexpr auto intrusive_ptr_decrement
Definition intrusive_ptr_cpo.h:26
constexpr auto retain_object
Definition intrusive_ptr.h:17
constexpr auto intrusive_ptr_increment
Definition intrusive_ptr_cpo.h:25
Definition zstring_parser.h:9
constexpr auto in_place_type
Definition in_place_type.h:12
Definition intrusive_ptr.h:19
Definition intrusive_ptr.h:14