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