refactor(typetraits): replaces template class type traits with concepts for TypeTraits/Miscellaneous.h
This commit is contained in:
@ -53,32 +53,12 @@ NAMESPACE_UNNAMED_END
|
||||
|
||||
void TestConcepts()
|
||||
{
|
||||
// Same.h
|
||||
|
||||
always_check(!(CSameAs<int32, int64>));
|
||||
always_check((CSameAs<int32, int32>));
|
||||
|
||||
// Derived.h
|
||||
|
||||
always_check(!(CDerivedFrom<FTestStructH, FTestStructD>));
|
||||
always_check((CDerivedFrom<FTestStructH, FTestStructE>));
|
||||
always_check(!(CDerivedFrom<FTestStructE, FTestStructH>));
|
||||
|
||||
// Convertible.h
|
||||
|
||||
always_check((CConvertibleTo<int32, uint32>));
|
||||
always_check(!(CConvertibleTo<FTestStructH*, FTestStructD*>));
|
||||
always_check((CConvertibleTo<FTestStructH*, FTestStructE*>));
|
||||
always_check(!(CConvertibleTo<FTestStructE*, FTestStructH*>));
|
||||
always_check((CConvertibleTo<FTestStructW, FTestStructV>));
|
||||
|
||||
// BooleanTestable.h
|
||||
|
||||
always_check(CBooleanTestable<bool>);
|
||||
always_check(CBooleanTestable<int32>);
|
||||
always_check(CBooleanTestable<float>);
|
||||
always_check(!CBooleanTestable<FTestStructA>);
|
||||
|
||||
// Common.h
|
||||
|
||||
always_check((CCommonWith<int32, int32>));
|
||||
@ -133,15 +113,6 @@ void TestConcepts()
|
||||
|
||||
always_check((CSwappableWith<int32&, int32&>));
|
||||
|
||||
// Invocable.h
|
||||
|
||||
always_check((CInvocable <decltype([]( ) -> void { }) >));
|
||||
always_check((CRegularInvocable <decltype([](int32 A ) -> int32 { return A; }), int32 >));
|
||||
always_check((CPredicate <decltype([](int32 A, int32 B, int32 C) -> bool { return (A + B + C) == 0; }), int32, int32, int32 >));
|
||||
always_check((CRelation <decltype([](int32 A, int32 B ) -> bool { return (A ^ B) == 0; }), int32, int32 >));
|
||||
always_check((CEquivalenceRelation<decltype([](int32 A, int32 B ) -> bool { return A == B; }), int32, int32 >));
|
||||
always_check((CStrictWeakOrder <decltype([](int32 A, int32 B ) -> bool { return A < B; }), int32, int32 >));
|
||||
|
||||
}
|
||||
|
||||
NAMESPACE_END(Testing)
|
||||
|
@ -185,9 +185,9 @@ void TestCompare()
|
||||
always_check((FTestStrongOrdering( 0) == FTestStrongOrdering( 0)));
|
||||
always_check((FTestStrongOrdering( 0) > FTestStrongOrdering(-1)));
|
||||
|
||||
always_check((TIsSame<TCommonComparisonCategory<strong_ordering >::Type, strong_ordering >::Value));
|
||||
always_check((TIsSame<TCommonComparisonCategory<strong_ordering, weak_ordering >::Type, weak_ordering >::Value));
|
||||
always_check((TIsSame<TCommonComparisonCategory<strong_ordering, weak_ordering, partial_ordering>::Type, partial_ordering>::Value));
|
||||
always_check((CSameAs<TCommonComparisonCategory<strong_ordering >::Type, strong_ordering >));
|
||||
always_check((CSameAs<TCommonComparisonCategory<strong_ordering, weak_ordering >::Type, weak_ordering >));
|
||||
always_check((CSameAs<TCommonComparisonCategory<strong_ordering, weak_ordering, partial_ordering>::Type, partial_ordering>));
|
||||
|
||||
always_check(CThreeWayComparable<int32>);
|
||||
always_check(CThreeWayComparable<FTestPartialOrdering>);
|
||||
@ -197,11 +197,11 @@ void TestCompare()
|
||||
always_check((CThreeWayComparableWith<bool, bool>));
|
||||
always_check((CThreeWayComparableWith<int16, int32>));
|
||||
|
||||
always_check((TIsSame<TCompareThreeWayResult<int32 >::Type, strong_ordering >::Value));
|
||||
always_check((TIsSame<TCompareThreeWayResult<float >::Type, partial_ordering>::Value));
|
||||
always_check((TIsSame<TCompareThreeWayResult<FTestPartialOrdering>::Type, partial_ordering>::Value));
|
||||
always_check((TIsSame<TCompareThreeWayResult<FTestWeakOrdering >::Type, weak_ordering >::Value));
|
||||
always_check((TIsSame<TCompareThreeWayResult<FTestStrongOrdering >::Type, strong_ordering >::Value));
|
||||
always_check((CSameAs<TCompareThreeWayResult<int32 >::Type, strong_ordering >));
|
||||
always_check((CSameAs<TCompareThreeWayResult<float >::Type, partial_ordering>));
|
||||
always_check((CSameAs<TCompareThreeWayResult<FTestPartialOrdering>::Type, partial_ordering>));
|
||||
always_check((CSameAs<TCompareThreeWayResult<FTestWeakOrdering >::Type, weak_ordering >));
|
||||
always_check((CSameAs<TCompareThreeWayResult<FTestStrongOrdering >::Type, strong_ordering >));
|
||||
|
||||
always_check((SynthThreeWayCompare(0, 0) == strong_ordering::equal));
|
||||
always_check((SynthThreeWayCompare(0, 0.0) == strong_ordering::equal));
|
||||
|
@ -79,8 +79,8 @@ void TestReferenceWrapper()
|
||||
always_check(ArrayA[1] == 4);
|
||||
always_check(ArrayA[2] == 6);
|
||||
|
||||
always_check((TIsSame<int32, TUnwrapRefDecay<int32>::Type>::Value));
|
||||
always_check((TIsSame<int32&, TUnwrapRefDecay<TReferenceWrapper<int32>>::Type>::Value));
|
||||
always_check((CSameAs<int32, TUnwrapRefDecay<int32>::Type>));
|
||||
always_check((CSameAs<int32&, TUnwrapRefDecay<TReferenceWrapper<int32>>::Type>));
|
||||
}
|
||||
|
||||
void TestOptional()
|
||||
@ -255,9 +255,9 @@ void TestVariant()
|
||||
TempZ = TVariant<FTracker>();
|
||||
TempZ = FTracker();
|
||||
|
||||
always_check((TIsSame<int32, TVariantAlternativeType<0, TVariant<int32, float>>::Type>::Value));
|
||||
always_check((TIsSame<float, TVariantAlternativeType<1, TVariant<int32, float>>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TVariantAlternativeType<0, const TVariant<int32, float>>::Type>::Value));
|
||||
always_check((CSameAs<int32, TVariantAlternativeType<0, TVariant<int32, float>>::Type>));
|
||||
always_check((CSameAs<float, TVariantAlternativeType<1, TVariant<int32, float>>::Type>));
|
||||
always_check((CSameAs<const int32, TVariantAlternativeType<0, const TVariant<int32, float>>::Type>));
|
||||
|
||||
always_check((TVariantAlternativeIndex<int32, TVariant<int32, float>>::Value == 0));
|
||||
always_check((TVariantAlternativeIndex<float, TVariant<int32, float>>::Value == 1));
|
||||
@ -282,7 +282,7 @@ void TestVariant()
|
||||
|
||||
TVariant<int32> TempLA = 10;
|
||||
auto ReturnLA = TempLA.Visit(TestQualifiers);
|
||||
always_check((TIsSame<int32, decltype(ReturnLA)>::Value));
|
||||
always_check((CSameAs<int32, decltype(ReturnLA)>));
|
||||
|
||||
bIsConst = true;
|
||||
bIsLValue = true;
|
||||
@ -290,7 +290,7 @@ void TestVariant()
|
||||
|
||||
const TVariant<int32> TempLB = TempLA;
|
||||
auto ReturnLB = TempLB.Visit(TestQualifiers);
|
||||
always_check((TIsSame<int32, decltype(ReturnLB)>::Value));
|
||||
always_check((CSameAs<int32, decltype(ReturnLB)>));
|
||||
|
||||
bIsConst = false;
|
||||
bIsLValue = false;
|
||||
@ -298,7 +298,7 @@ void TestVariant()
|
||||
|
||||
TVariant<int32> TempRA = 10;
|
||||
auto ReturnRA = MoveTemp(TempRA).Visit(TestQualifiers);
|
||||
always_check((TIsSame<int32, decltype(ReturnRA)>::Value));
|
||||
always_check((CSameAs<int32, decltype(ReturnRA)>));
|
||||
|
||||
bIsConst = true;
|
||||
bIsLValue = false;
|
||||
@ -306,7 +306,7 @@ void TestVariant()
|
||||
|
||||
const TVariant<int32> TempRB = TempLA;
|
||||
auto ReturnRB = MoveTemp(TempRB).Visit(TestQualifiers);
|
||||
always_check((TIsSame<int32, decltype(ReturnRB)>::Value));
|
||||
always_check((CSameAs<int32, decltype(ReturnRB)>));
|
||||
|
||||
bIsConst = false;
|
||||
bIsLValue = true;
|
||||
@ -314,7 +314,7 @@ void TestVariant()
|
||||
|
||||
TVariant<int32> TempLC = 10;
|
||||
auto ReturnLC = TempLC.Visit<int32>(TestQualifiers);
|
||||
always_check((TIsSame<int32, decltype(ReturnLC)>::Value));
|
||||
always_check((CSameAs<int32, decltype(ReturnLC)>));
|
||||
|
||||
bIsConst = true;
|
||||
bIsLValue = true;
|
||||
@ -322,7 +322,7 @@ void TestVariant()
|
||||
|
||||
const TVariant<int32> TempLD = TempLC;
|
||||
auto ReturnLD = TempLD.Visit<int32>(TestQualifiers);
|
||||
always_check((TIsSame<int32, decltype(ReturnLD)>::Value));
|
||||
always_check((CSameAs<int32, decltype(ReturnLD)>));
|
||||
|
||||
bIsConst = false;
|
||||
bIsLValue = false;
|
||||
@ -330,7 +330,7 @@ void TestVariant()
|
||||
|
||||
TVariant<int32> TempRC = 10;
|
||||
auto ReturnRC = MoveTemp(TempRC).Visit<int32>(TestQualifiers);
|
||||
always_check((TIsSame<int32, decltype(ReturnRC)>::Value));
|
||||
always_check((CSameAs<int32, decltype(ReturnRC)>));
|
||||
|
||||
bIsConst = true;
|
||||
bIsLValue = false;
|
||||
@ -338,7 +338,7 @@ void TestVariant()
|
||||
|
||||
const TVariant<int32> TempRD = TempLC;
|
||||
auto ReturnRD = MoveTemp(TempRD).Visit<int32>(TestQualifiers);
|
||||
always_check((TIsSame<int32, decltype(ReturnRD)>::Value));
|
||||
always_check((CSameAs<int32, decltype(ReturnRD)>));
|
||||
}
|
||||
|
||||
{
|
||||
@ -584,120 +584,120 @@ void TestAny()
|
||||
|
||||
void TestTuple()
|
||||
{
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< int32, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const int32, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< volatile int32, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const volatile int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< int32, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const int32, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< volatile int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const volatile int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< int32, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< volatile int32, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const volatile int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< volatile int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const volatile int32, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< int32, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const int32, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< volatile int32, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const volatile int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< int32, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const int32, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< volatile int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const volatile int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< int32, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< volatile int32, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const volatile int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< volatile int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const volatile int32, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< int32, char>&&>().GetValue<0>()), int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const int32, char>&&>().GetValue<0>()), const int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< volatile int32, char>&&>().GetValue<0>()), volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< int32, char>&&>().GetValue<0>()), const int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const int32, char>&&>().GetValue<0>()), const int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< int32, char>&&>().GetValue<0>()), volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< volatile int32, char>&&>().GetValue<0>()), volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< int32, char>&&>().GetValue<0>()), int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const int32, char>&&>().GetValue<0>()), const int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< volatile int32, char>&&>().GetValue<0>()), volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< int32, char>&&>().GetValue<0>()), const int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const int32, char>&&>().GetValue<0>()), const int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< int32, char>&&>().GetValue<0>()), volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< volatile int32, char>&&>().GetValue<0>()), volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const volatile int32, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< int32&, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const int32&, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< volatile int32&, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const volatile int32&, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< int32&, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const int32&, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< volatile int32&, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const volatile int32&, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< int32&, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const int32&, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< volatile int32&, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const volatile int32&, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< int32&, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const int32&, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< volatile int32&, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const volatile int32&, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< int32&, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const int32&, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< volatile int32&, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const volatile int32&, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< int32&, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const int32&, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< volatile int32&, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const volatile int32&, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< int32&, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const int32&, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< volatile int32&, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const volatile int32&, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< int32&, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const int32&, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< volatile int32&, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const volatile int32&, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< int32&, char>&&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const int32&, char>&&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< volatile int32&, char>&&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const volatile int32&, char>&&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< int32&, char>&&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const int32&, char>&&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< volatile int32&, char>&&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const volatile int32&, char>&&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< int32&, char>&&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const int32&, char>&&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< volatile int32&, char>&&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const volatile int32&, char>&&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< int32&, char>&&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const int32&, char>&&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< volatile int32&, char>&&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const volatile int32&, char>&&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< int32&, char>&&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const int32&, char>&&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< volatile int32&, char>&&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const volatile int32&, char>&&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< int32&, char>&&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const int32&, char>&&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< volatile int32&, char>&&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const volatile int32&, char>&&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< int32&, char>&&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const int32&, char>&&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< volatile int32&, char>&&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const volatile int32&, char>&&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< int32&, char>&&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const int32&, char>&&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< volatile int32&, char>&&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const volatile int32&, char>&&>().GetValue<0>()), const volatile int32&>));
|
||||
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< int32&&, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const int32&&, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< volatile int32&&, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const volatile int32&&, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< int32&&, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const int32&&, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< volatile int32&&, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const volatile int32&&, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< int32&&, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const int32&&, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< volatile int32&&, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const volatile int32&&, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< int32&&, char>&>().GetValue<0>()), int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const int32&&, char>&>().GetValue<0>()), const int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< volatile int32&&, char>&>().GetValue<0>()), volatile int32&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const volatile int32&&, char>&>().GetValue<0>()), const volatile int32&>::Value));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< int32&&, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const int32&&, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< volatile int32&&, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const volatile int32&&, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< int32&&, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const int32&&, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< volatile int32&&, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const volatile int32&&, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< int32&&, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const int32&&, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< volatile int32&&, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const volatile int32&&, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< int32&&, char>&>().GetValue<0>()), int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const int32&&, char>&>().GetValue<0>()), const int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< volatile int32&&, char>&>().GetValue<0>()), volatile int32&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const volatile int32&&, char>&>().GetValue<0>()), const volatile int32&>));
|
||||
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< int32&&, char>&&>().GetValue<0>()), int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const int32&&, char>&&>().GetValue<0>()), const int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple< volatile int32&&, char>&&>().GetValue<0>()), volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< TTuple<const volatile int32&&, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< int32&&, char>&&>().GetValue<0>()), int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const int32&&, char>&&>().GetValue<0>()), const int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple< volatile int32&&, char>&&>().GetValue<0>()), volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const TTuple<const volatile int32&&, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< int32&&, char>&&>().GetValue<0>()), int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const int32&&, char>&&>().GetValue<0>()), const int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple< volatile int32&&, char>&&>().GetValue<0>()), volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal< volatile TTuple<const volatile int32&&, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< int32&&, char>&&>().GetValue<0>()), int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const int32&&, char>&&>().GetValue<0>()), const int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple< volatile int32&&, char>&&>().GetValue<0>()), volatile int32&&>::Value));
|
||||
always_check((TIsSame<decltype(DeclVal<const volatile TTuple<const volatile int32&&, char>&&>().GetValue<0>()), const volatile int32&&>::Value));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< int32&&, char>&&>().GetValue<0>()), int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const int32&&, char>&&>().GetValue<0>()), const int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple< volatile int32&&, char>&&>().GetValue<0>()), volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< TTuple<const volatile int32&&, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< int32&&, char>&&>().GetValue<0>()), int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const int32&&, char>&&>().GetValue<0>()), const int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple< volatile int32&&, char>&&>().GetValue<0>()), volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const TTuple<const volatile int32&&, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< int32&&, char>&&>().GetValue<0>()), int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const int32&&, char>&&>().GetValue<0>()), const int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple< volatile int32&&, char>&&>().GetValue<0>()), volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal< volatile TTuple<const volatile int32&&, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< int32&&, char>&&>().GetValue<0>()), int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const int32&&, char>&&>().GetValue<0>()), const int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple< volatile int32&&, char>&&>().GetValue<0>()), volatile int32&&>));
|
||||
always_check((CSameAs<decltype(DeclVal<const volatile TTuple<const volatile int32&&, char>&&>().GetValue<0>()), const volatile int32&&>));
|
||||
|
||||
always_check((TIsSame<TTupleElementType<0, TTuple<double, float&, char&&>>::Type, double>::Value));
|
||||
always_check((TIsSame<TTupleElementType<1, TTuple<double, float&, char&&>>::Type, float&>::Value));
|
||||
always_check((TIsSame<TTupleElementType<2, TTuple<double, float&, char&&>>::Type, char&&>::Value));
|
||||
always_check((TIsSame<TTupleElementType<0, const TTuple<double, float&, char&&>>::Type, const double>::Value));
|
||||
always_check((TIsSame<TTupleElementType<1, const TTuple<double, float&, char&&>>::Type, const float&>::Value));
|
||||
always_check((TIsSame<TTupleElementType<2, const TTuple<double, float&, char&&>>::Type, const char&&>::Value));
|
||||
always_check((TIsSame<TTupleElementType<0, volatile TTuple<double, float&, char&&>>::Type, volatile double>::Value));
|
||||
always_check((TIsSame<TTupleElementType<1, volatile TTuple<double, float&, char&&>>::Type, volatile float&>::Value));
|
||||
always_check((TIsSame<TTupleElementType<2, volatile TTuple<double, float&, char&&>>::Type, volatile char&&>::Value));
|
||||
always_check((TIsSame<TTupleElementType<0, const volatile TTuple<double, float&, char&&>>::Type, const volatile double>::Value));
|
||||
always_check((TIsSame<TTupleElementType<1, const volatile TTuple<double, float&, char&&>>::Type, const volatile float&>::Value));
|
||||
always_check((TIsSame<TTupleElementType<2, const volatile TTuple<double, float&, char&&>>::Type, const volatile char&&>::Value));
|
||||
always_check((CSameAs<TTupleElementType<0, TTuple<double, float&, char&&>>::Type, double>));
|
||||
always_check((CSameAs<TTupleElementType<1, TTuple<double, float&, char&&>>::Type, float&>));
|
||||
always_check((CSameAs<TTupleElementType<2, TTuple<double, float&, char&&>>::Type, char&&>));
|
||||
always_check((CSameAs<TTupleElementType<0, const TTuple<double, float&, char&&>>::Type, const double>));
|
||||
always_check((CSameAs<TTupleElementType<1, const TTuple<double, float&, char&&>>::Type, const float&>));
|
||||
always_check((CSameAs<TTupleElementType<2, const TTuple<double, float&, char&&>>::Type, const char&&>));
|
||||
always_check((CSameAs<TTupleElementType<0, volatile TTuple<double, float&, char&&>>::Type, volatile double>));
|
||||
always_check((CSameAs<TTupleElementType<1, volatile TTuple<double, float&, char&&>>::Type, volatile float&>));
|
||||
always_check((CSameAs<TTupleElementType<2, volatile TTuple<double, float&, char&&>>::Type, volatile char&&>));
|
||||
always_check((CSameAs<TTupleElementType<0, const volatile TTuple<double, float&, char&&>>::Type, const volatile double>));
|
||||
always_check((CSameAs<TTupleElementType<1, const volatile TTuple<double, float&, char&&>>::Type, const volatile float&>));
|
||||
always_check((CSameAs<TTupleElementType<2, const volatile TTuple<double, float&, char&&>>::Type, const volatile char&&>));
|
||||
|
||||
always_check((TTupleElementIndex<double, TTuple<double, float&, char&&>>::Value == 0));
|
||||
always_check((TTupleElementIndex<float&, TTuple<double, float&, char&&>>::Value == 1));
|
||||
@ -714,11 +714,11 @@ void TestTuple()
|
||||
|
||||
always_check((TTupleElementIndex<int32, TTuple<double, float&, char&&>>::Value == INDEX_NONE));
|
||||
|
||||
// always_check((TIsSame<TTupleElementType<0, int32>::Type, double>::Value));
|
||||
// always_check((CSameAs<TTupleElementType<0, int32>::Type, double>));
|
||||
|
||||
// always_check((TTupleElementIndex<int32, int32>::Value == 0));
|
||||
|
||||
// always_check((TIsSame<TTupleElementType<4, TTuple<double, float&, char&&>>::Type, double>::Value));
|
||||
// always_check((CSameAs<TTupleElementType<4, TTuple<double, float&, char&&>>::Type, double>));
|
||||
|
||||
{
|
||||
using Type = TTuple<int8, uint8, int16, uint16, int32, uint32, int64, uint64, int8, uint8, int16, uint16, int32, uint32, int64, uint64,
|
||||
@ -801,8 +801,8 @@ void TestTuple()
|
||||
always_check(TempE.GetValue<int32>() == 404);
|
||||
always_check(TempE.GetValue<double>() == 3.14);
|
||||
always_check(TempE.GetValue<float>() == 1.42f);
|
||||
always_check((TIsSame<decltype(TempE), TTuple<int32, FTracker, double, FTracker, float, FTracker>>::Value));
|
||||
always_check((TIsSame<decltype(TempE), typename TTupleCatResult<TTuple<int32, FTracker>, TTuple<double, FTracker>, TTuple<float, FTracker>>::Type>::Value));
|
||||
always_check((CSameAs<decltype(TempE), TTuple<int32, FTracker, double, FTracker, float, FTracker>>));
|
||||
always_check((CSameAs<decltype(TempE), typename TTupleCatResult<TTuple<int32, FTracker>, TTuple<double, FTracker>, TTuple<float, FTracker>>::Type>));
|
||||
}
|
||||
|
||||
{
|
||||
@ -826,8 +826,8 @@ void TestTuple()
|
||||
always_check(TempB == 3.14);
|
||||
always_check(TempG.GetValue<0>() == 10);
|
||||
always_check(TempG.GetValue<2>() == 10);
|
||||
always_check((TIsSame<decltype(TempG), TTuple<int32, double&, int16&, FTracker&&>>::Value));
|
||||
always_check((TIsSame<decltype(TempG), typename TTupleCatResult<TTuple<int32, double&>, TTuple<int16&, FTracker&&>>::Type>::Value));
|
||||
always_check((CSameAs<decltype(TempG), TTuple<int32, double&, int16&, FTracker&&>>));
|
||||
always_check((CSameAs<decltype(TempG), typename TTupleCatResult<TTuple<int32, double&>, TTuple<int16&, FTracker&&>>::Type>));
|
||||
}
|
||||
|
||||
{
|
||||
@ -839,8 +839,8 @@ void TestTuple()
|
||||
{
|
||||
always_check(A == 15);
|
||||
always_check(B == 514);
|
||||
always_check((TIsSame<T&&, int32&>::Value));
|
||||
always_check((TIsSame<U&&, const int64&>::Value));
|
||||
always_check((CSameAs<T&&, int32&>));
|
||||
always_check((CSameAs<U&&, const int64&>));
|
||||
}
|
||||
);
|
||||
|
||||
@ -849,8 +849,8 @@ void TestTuple()
|
||||
{
|
||||
always_check(A == 15);
|
||||
always_check(B == 514);
|
||||
always_check((TIsSame<T&&, int32&&>::Value));
|
||||
always_check((TIsSame<U&&, const int64&&>::Value));
|
||||
always_check((CSameAs<T&&, int32&&>));
|
||||
always_check((CSameAs<U&&, const int64&&>));
|
||||
}
|
||||
);
|
||||
|
||||
@ -860,9 +860,9 @@ void TestTuple()
|
||||
always_check(A == '-');
|
||||
always_check(B == 15);
|
||||
always_check(C == 514);
|
||||
always_check((TIsSame<T&&, char&&>::Value));
|
||||
always_check((TIsSame<U&&, int32&>::Value));
|
||||
always_check((TIsSame<V&&, const int64&>::Value));
|
||||
always_check((CSameAs<T&&, char&&>));
|
||||
always_check((CSameAs<U&&, int32&>));
|
||||
always_check((CSameAs<V&&, const int64&>));
|
||||
},
|
||||
'-'
|
||||
);
|
||||
@ -873,9 +873,9 @@ void TestTuple()
|
||||
always_check(A == '-');
|
||||
always_check(B == 15);
|
||||
always_check(C == 514);
|
||||
always_check((TIsSame<T&&, char&&>::Value));
|
||||
always_check((TIsSame<U&&, int32&&>::Value));
|
||||
always_check((TIsSame<V&&, const int64&&>::Value));
|
||||
always_check((CSameAs<T&&, char&&>));
|
||||
always_check((CSameAs<U&&, int32&&>));
|
||||
always_check((CSameAs<V&&, const int64&&>));
|
||||
},
|
||||
'-'
|
||||
);
|
||||
@ -886,9 +886,9 @@ void TestTuple()
|
||||
always_check(A == 15);
|
||||
always_check(B == 514);
|
||||
always_check(C == '-');
|
||||
always_check((TIsSame<T&&, int32&>::Value));
|
||||
always_check((TIsSame<U&&, const int64&>::Value));
|
||||
always_check((TIsSame<V&&, char&&>::Value));
|
||||
always_check((CSameAs<T&&, int32&>));
|
||||
always_check((CSameAs<U&&, const int64&>));
|
||||
always_check((CSameAs<V&&, char&&>));
|
||||
},
|
||||
'-'
|
||||
);
|
||||
@ -899,9 +899,9 @@ void TestTuple()
|
||||
always_check(A == 15);
|
||||
always_check(B == 514);
|
||||
always_check(C == '-');
|
||||
always_check((TIsSame<T&&, int32&&>::Value));
|
||||
always_check((TIsSame<U&&, const int64&&>::Value));
|
||||
always_check((TIsSame<V&&, char&&>::Value));
|
||||
always_check((CSameAs<T&&, int32&&>));
|
||||
always_check((CSameAs<U&&, const int64&&>));
|
||||
always_check((CSameAs<V&&, char&&>));
|
||||
},
|
||||
'-'
|
||||
);
|
||||
@ -914,8 +914,8 @@ void TestTuple()
|
||||
VisitTuple(
|
||||
[]<typename T> (T&& A)
|
||||
{
|
||||
if constexpr (TIsSame<T&&, int32&>::Value) always_check(A == 2);
|
||||
else if constexpr (TIsSame<T&&, char&>::Value) always_check(A == 'B');
|
||||
if constexpr (CSameAs<T&&, int32&>) always_check(A == 2);
|
||||
else if constexpr (CSameAs<T&&, char&>) always_check(A == 'B');
|
||||
else always_check_no_entry();
|
||||
},
|
||||
TempB
|
||||
@ -926,8 +926,8 @@ void TestTuple()
|
||||
VisitTuple(
|
||||
[]<typename T> (T&& A)
|
||||
{
|
||||
if constexpr (TIsSame<T&&, int32&>::Value) always_check(A == 3);
|
||||
else if constexpr (TIsSame<T&&, char&>::Value) always_check(A == 'C');
|
||||
if constexpr (CSameAs<T&&, int32&>) always_check(A == 3);
|
||||
else if constexpr (CSameAs<T&&, char&>) always_check(A == 'C');
|
||||
else always_check_no_entry();
|
||||
},
|
||||
TempB
|
||||
@ -953,7 +953,7 @@ void TestTuple()
|
||||
always_check(A == 1);
|
||||
always_check(B == 2.3);
|
||||
always_check(C == 'A');
|
||||
always_check((TIsSame<decltype(C), char>::Value));
|
||||
always_check((CSameAs<decltype(C), char>));
|
||||
}
|
||||
|
||||
always_check(GetTypeHash(MakeTuple(114, 1.0f)) == GetTypeHash(MakeTuple(114, 1.0f)));
|
||||
|
@ -301,105 +301,94 @@ void TestTypeTraits()
|
||||
|
||||
// Miscellaneous.h
|
||||
|
||||
always_check(TRank<int32[1][2][3]>::Value == 3);
|
||||
always_check(TRank<int32[1][2][3][4]>::Value == 4);
|
||||
always_check(TRank<int32>::Value == 0);
|
||||
always_check(ArrayRank<int32[1][2][3]> == 3);
|
||||
always_check(ArrayRank<int32[1][2][3][4]> == 4);
|
||||
always_check(ArrayRank<int32> == 0);
|
||||
|
||||
always_check(TExtent<int32[1][2][3]>::Value == 1);
|
||||
always_check((TExtent<int32[1][2][3][4], 1>::Value == 2));
|
||||
always_check(TExtent<int32[]>::Value == 0);
|
||||
always_check(ArrayExtent<int32[1][2][3]> == 1);
|
||||
always_check((ArrayExtent<int32[1][2][3][4], 1> == 2));
|
||||
always_check(ArrayExtent<int32[]> == 0);
|
||||
|
||||
always_check(!(TIsSame<int32, int64>::Value));
|
||||
always_check((TIsSame<int32, int32>::Value));
|
||||
always_check(!(CSameAs<int32, int64>));
|
||||
always_check((CSameAs<int32, int32>));
|
||||
|
||||
always_check(!(TIsBaseOf<FTestStructH, FTestStructD>::Value));
|
||||
always_check(!(TIsBaseOf<FTestStructH, FTestStructE>::Value));
|
||||
always_check((TIsBaseOf<FTestStructE, FTestStructH>::Value));
|
||||
always_check(!(CBaseOf<FTestStructH, FTestStructD>));
|
||||
always_check(!(CBaseOf<FTestStructH, FTestStructE>));
|
||||
always_check((CBaseOf<FTestStructE, FTestStructH>));
|
||||
|
||||
always_check((TIsConvertible<int32, uint32>::Value));
|
||||
always_check(!(TIsConvertible<FTestStructH*, FTestStructD*>::Value));
|
||||
always_check((TIsConvertible<FTestStructH*, FTestStructE*>::Value));
|
||||
always_check(!(TIsConvertible<FTestStructE*, FTestStructH*>::Value));
|
||||
always_check((TIsConvertible<FTestStructW, FTestStructV>::Value));
|
||||
always_check((CConvertibleTo<int32, uint32>));
|
||||
always_check(!(CConvertibleTo<FTestStructH*, FTestStructD*>));
|
||||
always_check((CConvertibleTo<FTestStructH*, FTestStructE*>));
|
||||
always_check(!(CConvertibleTo<FTestStructE*, FTestStructH*>));
|
||||
always_check((CConvertibleTo<FTestStructW, FTestStructV>));
|
||||
|
||||
always_check((TIsInvocable<int32()>::Value));
|
||||
always_check((TIsInvocable<int32(int32), int32>::Value));
|
||||
always_check(!(TIsInvocable<int32(int32), FTestStructA>::Value));
|
||||
always_check((TIsInvocable<int32(int32), int32>::Value));
|
||||
always_check((CSameAs<int32, TRemoveConst<int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveConst<int32*>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveConst<int32&>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveConst<int32&&>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveConst<const int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveConst<volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveConst<const volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveConst<const volatile int32&>::Type>));
|
||||
|
||||
always_check((TIsInvocableResult<void, int32()>::Value));
|
||||
always_check((TIsInvocableResult<int32, int32()>::Value));
|
||||
always_check((TIsInvocableResult<int32, int32(int32), int32>::Value));
|
||||
always_check(!(TIsInvocableResult<int32, int32(int32), FTestStructA>::Value));
|
||||
always_check(!(TIsInvocableResult<FTestStructA, int32(int32), int32>::Value));
|
||||
always_check((CSameAs<int32, TRemoveVolatile<int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveVolatile<int32*>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveVolatile<int32&>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveVolatile<int32&&>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveVolatile<const int32>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveVolatile<volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveVolatile<const volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveVolatile<const volatile int32&>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TRemoveConst<int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveConst<int32*>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveConst<int32&>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveConst<int32&&>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveConst<const int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveConst<volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveConst<const volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveConst<const volatile int32&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TRemoveCV<int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveCV<int32*>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveCV<int32&>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveCV<int32&&>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCV<const int32>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCV<volatile int32>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCV<const volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveCV<const volatile int32&>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TRemoveVolatile<int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveVolatile<int32*>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveVolatile<int32&>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveVolatile<int32&&>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveVolatile<const int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveVolatile<volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveVolatile<const volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveVolatile<const volatile int32&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TRemovePointer<int32>::Type>));
|
||||
always_check((CSameAs<int32, TRemovePointer<int32*>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemovePointer<int32&>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemovePointer<int32&&>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemovePointer<const int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemovePointer<volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemovePointer<const volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemovePointer<const volatile int32&>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TRemoveCV<int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveCV<int32*>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveCV<int32&>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveCV<int32&&>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCV<const int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCV<volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCV<const volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveCV<const volatile int32&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TRemoveReference<int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveReference<int32*>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveReference<int32&>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveReference<int32&&>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveReference<const int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveReference<volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveReference<const volatile int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveReference<const volatile int32&>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TRemovePointer<int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemovePointer<int32*>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemovePointer<int32&>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemovePointer<int32&&>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemovePointer<const int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemovePointer<volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemovePointer<const volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemovePointer<const volatile int32&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TRemoveCVRef<int32>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveCVRef<int32*>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCVRef<int32&>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCVRef<int32&&>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCVRef<const int32>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCVRef<volatile int32>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCVRef<const volatile int32>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveCVRef<const volatile int32&>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TRemoveReference<int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveReference<int32*>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveReference<int32&>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveReference<int32&&>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveReference<const int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveReference<volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveReference<const volatile int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveReference<const volatile int32&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TRemoveExtent<int32[1]>::Type>));
|
||||
always_check(!(CSameAs<int32, TRemoveExtent<int32[1][2]>::Type>));
|
||||
always_check((CSameAs<int32[2][3], TRemoveExtent<int32[1][2][3]>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TRemoveCVRef<int32>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveCVRef<int32*>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCVRef<int32&>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCVRef<int32&&>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCVRef<const int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCVRef<volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCVRef<const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveCVRef<const volatile int32&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TRemoveAllExtents<int32[1]>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveAllExtents<int32[1][2]>::Type>));
|
||||
always_check((CSameAs<int32, TRemoveAllExtents<int32[1][2][3]>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TRemoveExtent<int32[1]>::Type>::Value));
|
||||
always_check(!(TIsSame<int32, TRemoveExtent<int32[1][2]>::Type>::Value));
|
||||
always_check((TIsSame<int32[2][3], TRemoveExtent<int32[1][2][3]>::Type>::Value));
|
||||
always_check((CSameAs<int32, TMakeSigned<int32>::Type>));
|
||||
always_check((CSameAs<int32, TMakeSigned<uint32>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TRemoveAllExtents<int32[1]>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveAllExtents<int32[1][2]>::Type>::Value));
|
||||
always_check((TIsSame<int32, TRemoveAllExtents<int32[1][2][3]>::Type>::Value));
|
||||
|
||||
always_check((TIsSame<int32, TMakeSigned<int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TMakeSigned<uint32>::Type>::Value));
|
||||
|
||||
always_check((TIsSame<uint32, TMakeUnsigned<int32>::Type>::Value));
|
||||
always_check((TIsSame<uint32, TMakeUnsigned<uint32>::Type>::Value));
|
||||
always_check((CSameAs<uint32, TMakeUnsigned<int32>::Type>));
|
||||
always_check((CSameAs<uint32, TMakeUnsigned<uint32>::Type>));
|
||||
|
||||
TAlignedStorage<32, 4>::Type Aligned4;
|
||||
TAlignedStorage<32, 8>::Type Aligned8;
|
||||
@ -415,40 +404,60 @@ void TestTypeTraits()
|
||||
always_check(sizeof(TAlignedUnion<0, int32, int64>::Type) == 8);
|
||||
always_check(sizeof(TAlignedUnion<0, int32, double>::Type) == 8);
|
||||
|
||||
always_check((TIsSame<int32, TDecay<int32>::Type>::Value));
|
||||
always_check((TIsSame<int32*, TDecay<int32*>::Type>::Value));
|
||||
always_check((TIsSame<int32*, TDecay<int32[]>::Type>::Value));
|
||||
always_check((TIsSame<int32, TDecay<int32&>::Type>::Value));
|
||||
always_check((TIsSame<int32, TDecay<int32&&>::Type>::Value));
|
||||
always_check((TIsSame<int32, TDecay<const int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TDecay<volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TDecay<const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<int32, TDecay<const volatile int32&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TDecay<int32>::Type>));
|
||||
always_check((CSameAs<int32*, TDecay<int32*>::Type>));
|
||||
always_check((CSameAs<int32*, TDecay<int32[]>::Type>));
|
||||
always_check((CSameAs<int32, TDecay<int32&>::Type>));
|
||||
always_check((CSameAs<int32, TDecay<int32&&>::Type>));
|
||||
always_check((CSameAs<int32, TDecay<const int32>::Type>));
|
||||
always_check((CSameAs<int32, TDecay<volatile int32>::Type>));
|
||||
always_check((CSameAs<int32, TDecay<const volatile int32>::Type>));
|
||||
always_check((CSameAs<int32, TDecay<const volatile int32&>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TConditional<true, int32, int64>::Type>::Value));
|
||||
always_check((TIsSame<int64, TConditional<false, int32, int64>::Type>::Value));
|
||||
always_check((CSameAs<int32, TConditional<true, int32, int64>::Type>));
|
||||
always_check((CSameAs<int64, TConditional<false, int32, int64>::Type>));
|
||||
|
||||
always_check((TIsSame<int, TUnderlyingType<ETestEnumClass>::Type>::Value));
|
||||
always_check((TIsSame<uint8, TUnderlyingType<ETestEnumClass8>::Type>::Value));
|
||||
always_check((TIsSame<uint32, TUnderlyingType<ETestEnumClass32>::Type>::Value));
|
||||
always_check((TIsSame<uint64, TUnderlyingType<ETestEnumClass64>::Type>::Value));
|
||||
always_check((CSameAs<int, TUnderlyingType<ETestEnumClass>::Type>));
|
||||
always_check((CSameAs<uint8, TUnderlyingType<ETestEnumClass8>::Type>));
|
||||
always_check((CSameAs<uint32, TUnderlyingType<ETestEnumClass32>::Type>));
|
||||
always_check((CSameAs<uint64, TUnderlyingType<ETestEnumClass64>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TInvokeResult<int32()>::Type>::Value));
|
||||
always_check((TIsSame<int32, TInvokeResult<int32(int32), int32>::Type>::Value));
|
||||
// always_check((TIsSame<char(&)[2], TInvokeResult<char(&())[2]>::Type>::Value));
|
||||
always_check((CSameAs<void, TVoid<int32>::Type>));
|
||||
always_check((CSameAs<void, TVoid<int32, int64>::Type>));
|
||||
|
||||
// Invocable.h
|
||||
|
||||
always_check((CInvocable<int32()>));
|
||||
always_check((CInvocable<int32(int32), int32>));
|
||||
always_check(!(CInvocable<int32(int32), FTestStructA>));
|
||||
always_check((CInvocable<int32(int32), int32>));
|
||||
|
||||
always_check((TIsSame<void, TVoid<int32>::Type>::Value));
|
||||
always_check((TIsSame<void, TVoid<int32, int64>::Type>::Value));
|
||||
always_check((CInvocableResult<void, int32()>));
|
||||
always_check((CInvocableResult<int32, int32()>));
|
||||
always_check((CInvocableResult<int32, int32(int32), int32>));
|
||||
always_check(!(CInvocableResult<int32, int32(int32), FTestStructA>));
|
||||
always_check(!(CInvocableResult<FTestStructA, int32(int32), int32>));
|
||||
|
||||
always_check((CSameAs<int32, TInvokeResult<int32()>::Type>));
|
||||
always_check((CSameAs<int32, TInvokeResult<int32(int32), int32>::Type>));
|
||||
// always_check((CSameAs<char(&)[2], TInvokeResult<char(&())[2]>::Type>));
|
||||
|
||||
always_check((CInvocable <decltype([]( ) -> void { }) >));
|
||||
always_check((CRegularInvocable <decltype([](int32 A ) -> int32 { return A; }), int32 >));
|
||||
always_check((CPredicate <decltype([](int32 A, int32 B, int32 C) -> bool { return (A + B + C) == 0; }), int32, int32, int32 >));
|
||||
always_check((CRelation <decltype([](int32 A, int32 B ) -> bool { return (A ^ B) == 0; }), int32, int32 >));
|
||||
always_check((CEquivalenceRelation<decltype([](int32 A, int32 B ) -> bool { return A == B; }), int32, int32 >));
|
||||
always_check((CStrictWeakOrder <decltype([](int32 A, int32 B ) -> bool { return A < B; }), int32, int32 >));
|
||||
|
||||
// Common.h
|
||||
|
||||
always_check((TIsSame<int32, TCommonType<int8, int32>::Type>::Value));
|
||||
always_check((TIsSame<int64, TCommonType<int8, int32, int64>::Type>::Value));
|
||||
always_check((TIsSame<double, TCommonType<float, double>::Type>::Value));
|
||||
always_check((CSameAs<int32, TCommonType<int8, int32>::Type>));
|
||||
always_check((CSameAs<int64, TCommonType<int8, int32, int64>::Type>));
|
||||
always_check((CSameAs<double, TCommonType<float, double>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TCommonReference<int8, int32>::Type>::Value));
|
||||
always_check((TIsSame<int64, TCommonReference<int8, int32, int64>::Type>::Value));
|
||||
always_check((TIsSame<double, TCommonReference<float, double>::Type>::Value));
|
||||
always_check((CSameAs<int32, TCommonReference<int8, int32>::Type>));
|
||||
always_check((CSameAs<int64, TCommonReference<int8, int32, int64>::Type>));
|
||||
always_check((CSameAs<double, TCommonReference<float, double>::Type>));
|
||||
|
||||
// Swappable.h
|
||||
|
||||
@ -461,81 +470,88 @@ void TestTypeTraits()
|
||||
|
||||
// CopyQualifiers.h
|
||||
|
||||
always_check((TIsSame< int32, TCopyConst< int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyConst<const int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyConst<const volatile int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyConst< int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyConst<const int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyConst<const volatile int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyConst< int32, const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyConst<const int32, const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyConst<const volatile int32, const volatile int32>::Type>::Value));
|
||||
always_check((CSameAs< int32, TCopyConst< int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyConst<const int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyConst<const volatile int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyConst< int32, const int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyConst<const int32, const int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyConst<const volatile int32, const int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyConst< int32, const volatile int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyConst<const int32, const volatile int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyConst<const volatile int32, const volatile int32>::Type>));
|
||||
|
||||
always_check((TIsSame< int32, TCopyVolatile< int32, int32>::Type>::Value));
|
||||
always_check((TIsSame< int32, TCopyVolatile<const int32, int32>::Type>::Value));
|
||||
always_check((TIsSame< volatile int32, TCopyVolatile<const volatile int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyVolatile< int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyVolatile<const int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyVolatile<const volatile int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyVolatile< int32, const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyVolatile<const int32, const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyVolatile<const volatile int32, const volatile int32>::Type>::Value));
|
||||
always_check((CSameAs< int32, TCopyVolatile< int32, int32>::Type>));
|
||||
always_check((CSameAs< int32, TCopyVolatile<const int32, int32>::Type>));
|
||||
always_check((CSameAs< volatile int32, TCopyVolatile<const volatile int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyVolatile< int32, const int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyVolatile<const int32, const int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyVolatile<const volatile int32, const int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyVolatile< int32, const volatile int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyVolatile<const int32, const volatile int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyVolatile<const volatile int32, const volatile int32>::Type>));
|
||||
|
||||
always_check((TIsSame< int32, TCopyCV< int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCV<const int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCV<const volatile int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCV< int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCV<const int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCV<const volatile int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCV< int32, const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCV<const int32, const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCV<const volatile int32, const volatile int32>::Type>::Value));
|
||||
always_check((CSameAs< int32, TCopyCV< int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCV<const int32, int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCV<const volatile int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCV< int32, const int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCV<const int32, const int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCV<const volatile int32, const int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCV< int32, const volatile int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCV<const int32, const volatile int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCV<const volatile int32, const volatile int32>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TCopyReference<int32, int32 >::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyReference<int32, int32& >::Type>::Value));
|
||||
always_check((TIsSame<int32&&, TCopyReference<int32, int32&&>::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyReference<int32&, int32 >::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyReference<int32&, int32& >::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyReference<int32&, int32&&>::Type>::Value));
|
||||
always_check((TIsSame<int32&&, TCopyReference<int32&&, int32 >::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyReference<int32&&, int32& >::Type>::Value));
|
||||
always_check((TIsSame<int32&&, TCopyReference<int32&&, int32&&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TCopyReference<int32, int32 >::Type>));
|
||||
always_check((CSameAs<int32&, TCopyReference<int32, int32& >::Type>));
|
||||
always_check((CSameAs<int32&&, TCopyReference<int32, int32&&>::Type>));
|
||||
always_check((CSameAs<int32&, TCopyReference<int32&, int32 >::Type>));
|
||||
always_check((CSameAs<int32&, TCopyReference<int32&, int32& >::Type>));
|
||||
always_check((CSameAs<int32&, TCopyReference<int32&, int32&&>::Type>));
|
||||
always_check((CSameAs<int32&&, TCopyReference<int32&&, int32 >::Type>));
|
||||
always_check((CSameAs<int32&, TCopyReference<int32&&, int32& >::Type>));
|
||||
always_check((CSameAs<int32&&, TCopyReference<int32&&, int32&&>::Type>));
|
||||
|
||||
always_check((TIsSame< int32, TCopyCVRef< int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCVRef<const int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCVRef< int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCVRef<const int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame< volatile int32, TCopyCVRef< volatile int32, int32>::Type>::Value));
|
||||
always_check((TIsSame< volatile int32, TCopyCVRef< int32, volatile int32>::Type>::Value));
|
||||
always_check((TIsSame< volatile int32, TCopyCVRef< volatile int32, volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCVRef<const int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCVRef<const volatile int32, int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCVRef< int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const int32, TCopyCVRef<const int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCVRef<const volatile int32, const int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCVRef< int32, const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCVRef<const int32, const volatile int32>::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32, TCopyCVRef<const volatile int32, const volatile int32>::Type>::Value));
|
||||
always_check((CSameAs< int32, TCopyCVRef< int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCVRef<const int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCVRef< int32, const int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCVRef<const int32, const int32>::Type>));
|
||||
always_check((CSameAs< volatile int32, TCopyCVRef< volatile int32, int32>::Type>));
|
||||
always_check((CSameAs< volatile int32, TCopyCVRef< int32, volatile int32>::Type>));
|
||||
always_check((CSameAs< volatile int32, TCopyCVRef< volatile int32, volatile int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCVRef<const int32, int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCVRef<const volatile int32, int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCVRef< int32, const int32>::Type>));
|
||||
always_check((CSameAs<const int32, TCopyCVRef<const int32, const int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCVRef<const volatile int32, const int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCVRef< int32, const volatile int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCVRef<const int32, const volatile int32>::Type>));
|
||||
always_check((CSameAs<const volatile int32, TCopyCVRef<const volatile int32, const volatile int32>::Type>));
|
||||
|
||||
always_check((TIsSame<int32, TCopyCVRef<int32, int32 >::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyCVRef<int32, int32& >::Type>::Value));
|
||||
always_check((TIsSame<int32&&, TCopyCVRef<int32, int32&&>::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyCVRef<int32&, int32 >::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyCVRef<int32&, int32& >::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyCVRef<int32&, int32&&>::Type>::Value));
|
||||
always_check((TIsSame<int32&&, TCopyCVRef<int32&&, int32 >::Type>::Value));
|
||||
always_check((TIsSame<int32&, TCopyCVRef<int32&&, int32& >::Type>::Value));
|
||||
always_check((TIsSame<int32&&, TCopyCVRef<int32&&, int32&&>::Type>::Value));
|
||||
always_check((CSameAs<int32, TCopyCVRef<int32, int32 >::Type>));
|
||||
always_check((CSameAs<int32&, TCopyCVRef<int32, int32& >::Type>));
|
||||
always_check((CSameAs<int32&&, TCopyCVRef<int32, int32&&>::Type>));
|
||||
always_check((CSameAs<int32&, TCopyCVRef<int32&, int32 >::Type>));
|
||||
always_check((CSameAs<int32&, TCopyCVRef<int32&, int32& >::Type>));
|
||||
always_check((CSameAs<int32&, TCopyCVRef<int32&, int32&&>::Type>));
|
||||
always_check((CSameAs<int32&&, TCopyCVRef<int32&&, int32 >::Type>));
|
||||
always_check((CSameAs<int32&, TCopyCVRef<int32&&, int32& >::Type>));
|
||||
always_check((CSameAs<int32&&, TCopyCVRef<int32&&, int32&&>::Type>));
|
||||
|
||||
always_check((TIsSame<const int32, TCopyCVRef<const int32, int32 >::Type>::Value));
|
||||
always_check((TIsSame<const int32&, TCopyCVRef< int32, const int32& >::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32&&, TCopyCVRef<const volatile int32, const int32&&>::Type>::Value));
|
||||
always_check((TIsSame<const int32&, TCopyCVRef<const int32&, int32 >::Type>::Value));
|
||||
always_check((TIsSame<const int32&, TCopyCVRef<const int32&, const int32& >::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32&, TCopyCVRef< volatile int32&, const int32&&>::Type>::Value));
|
||||
always_check((TIsSame<const int32&&, TCopyCVRef<const int32&&, int32 >::Type>::Value));
|
||||
always_check((TIsSame<const int32&, TCopyCVRef<const int32&&, const int32& >::Type>::Value));
|
||||
always_check((TIsSame<const volatile int32&&, TCopyCVRef<const volatile int32&&, const int32&&>::Type>::Value));
|
||||
always_check((CSameAs<const int32, TCopyCVRef<const int32, int32 >::Type>));
|
||||
always_check((CSameAs<const int32&, TCopyCVRef< int32, const int32& >::Type>));
|
||||
always_check((CSameAs<const volatile int32&&, TCopyCVRef<const volatile int32, const int32&&>::Type>));
|
||||
always_check((CSameAs<const int32&, TCopyCVRef<const int32&, int32 >::Type>));
|
||||
always_check((CSameAs<const int32&, TCopyCVRef<const int32&, const int32& >::Type>));
|
||||
always_check((CSameAs<const volatile int32&, TCopyCVRef< volatile int32&, const int32&&>::Type>));
|
||||
always_check((CSameAs<const int32&&, TCopyCVRef<const int32&&, int32 >::Type>));
|
||||
always_check((CSameAs<const int32&, TCopyCVRef<const int32&&, const int32& >::Type>));
|
||||
always_check((CSameAs<const volatile int32&&, TCopyCVRef<const volatile int32&&, const int32&&>::Type>));
|
||||
|
||||
// BooleanTestable.h
|
||||
|
||||
always_check(CBooleanTestable<bool>);
|
||||
always_check(CBooleanTestable<int32>);
|
||||
always_check(CBooleanTestable<float>);
|
||||
always_check(!CBooleanTestable<FTestStructA>);
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user