Template pred is true for pred!(pred!(pred)) but not for value "true"
Meta via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Mar 8 08:41:21 PDT 2015
template canBeAlias(T...)
if (T.length == 1)
{
static if (is(typeof({alias _ = T[0];})))
{
enum canBeAlias = true;
}
else
{
enum canBeAlias = false;
}
}
pragma(msg, canBeAlias!canBeAlias); //prints "true"
static assert(!canBeAlias!true); //passes
static assert(canBeAlias!(canBeAlias!canBeAlias)); //passes?!
What is going on here? `canBeAlias!canBeAlias` evaluates down to
true, so why is `canBeAlias!true` false when
`canBeAlias!(canBeAlias!canBeAlias)` is true?
More information about the Digitalmars-d-learn
mailing list