diff --git a/AK/StdLibExtras.h b/AK/StdLibExtras.h index d4f282cda4..c46ad6e86d 100644 --- a/AK/StdLibExtras.h +++ b/AK/StdLibExtras.h @@ -546,6 +546,9 @@ using Void = void; template constexpr auto DependentFalse = false; +template +using IsSigned = IsSame::Type>; + template using IsUnsigned = IsSame::Type>; @@ -623,6 +626,7 @@ using AK::IsFundamental; using AK::IsIntegral; using AK::IsNullPointer; using AK::IsSame; +using AK::IsSigned; using AK::IsUnion; using AK::IsUnsigned; using AK::IsVoid; diff --git a/AK/Tests/TestTypeTraits.cpp b/AK/Tests/TestTypeTraits.cpp index 2e1dbde4c5..1b13d71903 100644 --- a/AK/Tests/TestTypeTraits.cpp +++ b/AK/Tests/TestTypeTraits.cpp @@ -85,6 +85,14 @@ TEST_CASE(FundamentalTypeClassification) EXPECT_TRAIT_FALSE(IsFundamental, Empty, int*, int&); + EXPECT_TRAIT_FALSE(IsSigned, unsigned); + EXPECT_TRAIT_FALSE(IsSigned, unsigned short); + EXPECT_TRAIT_FALSE(IsSigned, unsigned char); + EXPECT_TRAIT_FALSE(IsSigned, unsigned long); + EXPECT_TRAIT_TRUE(IsSigned, int); + EXPECT_TRAIT_TRUE(IsSigned, short); + EXPECT_TRAIT_TRUE(IsSigned, long); + EXPECT_TRAIT_TRUE(IsUnsigned, unsigned); EXPECT_TRAIT_TRUE(IsUnsigned, unsigned short); EXPECT_TRAIT_TRUE(IsUnsigned, unsigned char);