6 template <
class T, std::u
intptr_t MASK = 1>
20 a_rhs._storage.address = 0;
34 if (
this != std::addressof(a_rhs)) {
43 if (
this != std::addressof(a_rhs)) {
47 a_rhs.storage.address = 0;
61 return reinterpret_cast<element_type*
>(ptr & ~FLAG_MASK);
66 assert(
get() !=
nullptr);
72 [[nodiscard]]
explicit operator bool() const noexcept {
return get() !=
nullptr; }
Definition BSTPointerAndFlags.h:8
BSTPointerAndFlags & operator=(const BSTPointerAndFlags &a_rhs)
Definition BSTPointerAndFlags.h:32
constexpr BSTPointerAndFlags(BSTPointerAndFlags &&a_rhs) noexcept
Definition BSTPointerAndFlags.h:17
constexpr void clear_flags() noexcept
Definition BSTPointerAndFlags.h:83
~BSTPointerAndFlags()
Definition BSTPointerAndFlags.h:25
element_type & operator*() const noexcept
Definition BSTPointerAndFlags.h:64
Storage _storage
Definition BSTPointerAndFlags.h:88
constexpr BSTPointerAndFlags() noexcept=default
constexpr BSTPointerAndFlags(std::nullptr_t) noexcept
Definition BSTPointerAndFlags.h:23
BSTPointerAndFlags & operator=(BSTPointerAndFlags &&a_rhs) noexcept
Definition BSTPointerAndFlags.h:41
T value_type
Definition BSTPointerAndFlags.h:10
typename T::element_type element_type
Definition BSTPointerAndFlags.h:11
void reset() noexcept
Definition BSTPointerAndFlags.h:52
element_type * get() const noexcept
Definition BSTPointerAndFlags.h:58
static constexpr std::uintptr_t FLAG_MASK
Definition BSTPointerAndFlags.h:85
element_type * operator->() const noexcept
Definition BSTPointerAndFlags.h:70
Definition AbsorbEffect.h:6
Definition BSTPointerAndFlags.h:76
value_type ptr
Definition BSTPointerAndFlags.h:79
std::uintptr_t address
Definition BSTPointerAndFlags.h:80
~Storage() noexcept
Definition BSTPointerAndFlags.h:77