Checking that a template parameter is an enum
Nordlöw via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Oct 1 15:25:33 PDT 2015
On Thursday, 1 October 2015 at 02:06:48 UTC, Fusxfaranto wrote:
>> /** 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..$]);
>> }
>
> std.traits to the rescue!
>
> http://dlang.org/phobos/std_traits.html#isExpressions
>
> Using isExpressions!V as a template constraint looks like the
> behavior you're looking for.
Thanks!
BTW: Is there some way to turn the recursive definition of
`allSame` into an iterative definition?
More information about the Digitalmars-d-learn
mailing list