Checking that a template parameter is an enum

Nordlöw via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Sep 30 17:04:15 PDT 2015


How do I check that a template parameter is a CT-value or an enum 
symbol?

I want this to restrict the following template:

/** Returns: true iff all values $(D V) are the same. */
template allSame(V...)          // TODO restrict to values only
{
     static if (V.length <= 1)
         enum bool allSame = true;
     else
         enum bool allSame = V[0] == V[1] && allSame!(V[1..$]);
}

unittest
{
     static assert(!allSame!(41, 42));
     static assert(allSame!(42, 42, 42));
}



More information about the Digitalmars-d-learn mailing list