[+] AuTryLockMemoryType

This commit is contained in:
Reece Wilson 2023-04-06 15:04:36 +01:00
parent 822508526b
commit d29db2200c

View File

@ -190,25 +190,29 @@ static constexpr AuUInt AuArraySize(const T(&array)[Z])
} }
template <typename T, typename C> template <typename T, typename C>
#if defined(__INTELLISENSE__) static AuUInt AuOffsetOf(C T:: *offset)
// Visual Studio is smart enough to parse the constexpr expression properly
// CL.exe however, will not. It's useful enough for figuring out magic numbers
// in the VS, but not much else.
constexpr
#else
static
#endif
AuUInt AuOffsetOf(C T:: *offset)
{ {
#if defined(__INTELLISENSE__)
constexpr T *nil = nullptr;
constexpr C *nil2 = &(nil->*offset);
return AuUInt(nil2);
#else
return AuUInt( return AuUInt(
&(((const T *)(nullptr))->*offset) &(((const T *)(nullptr))->*offset)
); );
#endif }
template <typename T>
static auto AuTryLockMemoryType(T weak) -> decltype(weak.lock())
{
if (weak.expired())
{
return {};
}
AUROXTL_COMMODITY_TRY
{
return weak.lock();
}
AUROXTL_COMMODITY_CATCH
{
return {};
}
} }
template <typename T> template <typename T>