feat(templates): add AddressOf function and the corresponding testing
This commit is contained in:
@ -82,6 +82,18 @@ constexpr T Exchange(T& A, U&& B)
|
||||
template <typename T>
|
||||
T&& DeclVal();
|
||||
|
||||
template <typename T> requires TIsObject<T>::Value
|
||||
constexpr T* AddressOf(T& Object)
|
||||
{
|
||||
return reinterpret_cast<T*>(&const_cast<char&>(reinterpret_cast<const volatile char&>(Object)));
|
||||
}
|
||||
|
||||
template <typename T> requires !TIsObject<T>::Value
|
||||
constexpr T* AddressOf(T& Object)
|
||||
{
|
||||
return &Object;
|
||||
}
|
||||
|
||||
NAMESPACE_MODULE_END(Utility)
|
||||
NAMESPACE_MODULE_END(Redcraft)
|
||||
NAMESPACE_REDCRAFT_END
|
||||
|
@ -8,6 +8,7 @@ NAMESPACE_MODULE_BEGIN(Utility)
|
||||
|
||||
void REDCRAFTUTILITY_API TestTemplates();
|
||||
void REDCRAFTUTILITY_API TestInvoke();
|
||||
void REDCRAFTUTILITY_API TestMiscellaneous();
|
||||
|
||||
NAMESPACE_MODULE_END(Utility)
|
||||
NAMESPACE_MODULE_END(Redcraft)
|
||||
|
Reference in New Issue
Block a user