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;
66 assert(
get() !=
nullptr);
72 [[nodiscard]]
explicit operator bool() const noexcept {
return get() !=
nullptr; }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BSTPointerAndFlags.h:8
constexpr BSTPointerAndFlags(BSTPointerAndFlags &&a_rhs) noexcept
Definition: BSTPointerAndFlags.h:17
element_type * get() const noexcept
Definition: BSTPointerAndFlags.h:58
constexpr void clear_flags() noexcept
Definition: BSTPointerAndFlags.h:83
~BSTPointerAndFlags()
Definition: BSTPointerAndFlags.h:25
Storage _storage
Definition: BSTPointerAndFlags.h:88
constexpr BSTPointerAndFlags() noexcept=default
element_type & operator*() const noexcept
Definition: BSTPointerAndFlags.h:64
constexpr BSTPointerAndFlags(std::nullptr_t) noexcept
Definition: BSTPointerAndFlags.h:23
T value_type
Definition: BSTPointerAndFlags.h:10
typename T::element_type element_type
Definition: BSTPointerAndFlags.h:11
BSTPointerAndFlags & operator=(const BSTPointerAndFlags &a_rhs)
Definition: BSTPointerAndFlags.h:32
void reset() noexcept
Definition: BSTPointerAndFlags.h:52
BSTPointerAndFlags & operator=(BSTPointerAndFlags &&a_rhs) noexcept
Definition: BSTPointerAndFlags.h:41
element_type * operator->() const noexcept
Definition: BSTPointerAndFlags.h:70
static constexpr std::uintptr_t FLAG_MASK
Definition: BSTPointerAndFlags.h:85
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