Template-Parameterized Variadic isInstaceOf

"Nordlöw" via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Aug 7 07:30:52 PDT 2015


On Friday, 7 August 2015 at 14:13:24 UTC, Nordlöw wrote:
> How do check that the second template argument to the instance 
> of SortedRange matches `pred`?

Using TemplateArgsOf.

I found a solution:

template isSortedRange(T, alias pred = "a < b")
{
     import std.traits : TemplateArgsOf;
     enum isSortedRange = (is(T == SortedRange!Args, Args...) &&
                           pred == (TemplateArgsOf!T[1]));
}

///
unittest
{
     alias R = int[];
     enum pred = "a < b";
     alias SR = SortedRange!(R, pred);
     static assert(isSortedRange!(SR, pred));
}

Any suggestions on adding support for `binaryFun!pred` aswell?

My try

     enum isSortedRange = (is(T == SortedRange!Args, Args...) &&
                           is(binaryFun!pred == 
binaryFun!(TemplateArgsOf!T[1])));

fails.


More information about the Digitalmars-d-learn mailing list