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