11 std::shared_ptr<::Bedrock::EnableNonOwnerReferences::ControlBlock> mControlBlock;
14 NonOwnerPointer(std::shared_ptr<::Bedrock::EnableNonOwnerReferences::ControlBlock> cb, T* p)
15 : mControlBlock(std::move(cb)),
21 const_cast<T*
>(std::addressof(t))
27 if (mControlBlock && mControlBlock->mIsValid) {
32 explicit operator bool()
const noexcept {
return get() !=
nullptr; }
34 [[nodiscard]]
constexpr operator T*()
const {
return get(); }
35 [[nodiscard]]
constexpr T* operator->()
const {
return get(); }
36 [[nodiscard]]
constexpr T& operator*()
const {
return *get(); }
38 [[nodiscard]]
bool operator==(nullptr_t)
noexcept {
return get() ==
nullptr; }
41 return get() == r.get();
45 return get() <=> r.get();