This commit is contained in:
Reece Wilson 2022-03-26 12:32:07 +00:00
parent 47f7078a24
commit dd2bba92e5

View File

@ -48,7 +48,7 @@ inline constexpr bool AuIsSame_v = AuIsSame<T, U>::value;
namespace _audetail
{
template <class T>
AuBoolType<!std::is_union<T>::value> IsClass(int T:: *);
AuBoolType<!__is_union(T)> IsClass(int T:: *);
template <class>
AuFalseType IsClass(...);
@ -232,13 +232,16 @@ struct AuAddRReference
template <class T>
using AuAddRReference_t = typename AuAddRReference<T>::type;
template <class T>
inline AuAddRReference_t<T> AuDeclVal();
template <bool Test, class T = void>
using AuEnableIf_t = typename AuEnableIf<Test, T>::type;
template <class T, class ... Args>
struct AuIsConstructible
{
template <class T, class ... Args> static constexpr AuTrueType Test(decltype(T(std::declval<Args>()...)));
template <class T, class ... Args> static constexpr AuTrueType Test(decltype(T(AuDeclVal<Args>()...)));
template <class T, class ... Args> static constexpr AuFalseType Test(...);
using type = decltype(Test<T, Args...>(0));
};
@ -270,7 +273,7 @@ struct AuIsBaseOfTemplateImpl
template <class... Ts>
static constexpr AuTrueType Test(const Base<Ts...> *);
static constexpr AuFalseType Test(...);
using type = decltype(Test(std::declval<AuRemoveReference_t<Derived> *>()));
using type = decltype(Test(AuDeclVal<AuRemoveReference_t<Derived> *>()));
};
template <template <class...> class Base, typename Derived>