AuROXTL/Include/auROXTL/Utility/auIsObject.hpp

32 lines
709 B
C++

/***
Copyright (C) 2024 Jamie Reece Wilson (a/k/a "Reece"). All rights reserved.
File: auIsObject.hpp
File: auTemplateMeta.hpp
Date: 2024-11-30
Date: 2024-03-01
Author: Reece
***/
#pragma once
namespace __audetail
{
template <class T>
struct AuIsObject2
{
typedef AuConditional_mt(AuIsVoid_mv(T), AuFalseType, AuConditional_mt(AuIsConst_mv(const T), AuTrueType, AuFalseType)) Type;
};
}
template <class T>
struct AuIsObject : AuBoolType<__audetail::AuIsObject2<T>::Type::kValue>
{ };
#if defined(AU_LANG_CPP_14_)
template <class T>
AUROXTL_CONSTEXPR bool AuIsObject_v = AuIsObject<T>::kValue;
#endif
#define AuIsObject_mv(T) AuIsObject<T>::kValue