From 93e302ba98c67a77f9c7fdb108c7bcc384e3a30d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Nordl=C3=B6w?= Date: Thu, 19 Jan 2017 00:16:20 +0100 Subject: [PATCH] Compacter definition of isSigned including extra unittests --- std/traits.d | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/std/traits.d b/std/traits.d index 46472822f..38460314f 100644 --- a/std/traits.d +++ b/std/traits.d @@ -5429,10 +5429,16 @@ enum bool isUnsigned(T) = __traits(isUnsigned, T) && !(is(Unqual!T == char) || /** Detect whether $(D T) is a built-in signed numeric type. */ -enum bool isSigned(T) = is(SignedTypeOf!T) && !isAggregateType!T; +enum bool isSigned(T) = __traits(isArithmetic, T) && !__traits(isUnsigned, T); @safe unittest { + enum E { e1 = 0 } + static assert(isSigned!E); + + enum Eubyte : ubyte { e1 = 0 } + static assert(!isSigned!Eubyte); + foreach (T; TypeTuple!(SignedIntTypeList)) { foreach (Q; TypeQualifierList)