staticIsSorted

Checks if an AliasSeq is sorted according to cmp.

template staticIsSorted (
alias cmp
Seq...
) {
static if(Seq.length <= 1)
enum staticIsSorted;
static if(!(Seq.length <= 1))
static if(Seq.length == 2)
enum staticIsSorted;
static if(!(Seq.length <= 1))
static if(!(Seq.length == 2))
enum staticIsSorted;
}

Parameters

cmp

A template that returns a bool (if its first argument is less than the second one) or an int (-1 means less than, 0 means equal, 1 means greater than)

Seq

The AliasSeq to check

Return Value

true if Seq is sorted; otherwise false

Examples

enum Comp(int N1, int N2) = N1 < N2;
static assert( staticIsSorted!(Comp, 2, 2));
static assert( staticIsSorted!(Comp, 2, 3, 7, 23));
static assert(!staticIsSorted!(Comp, 7, 2, 3, 23));
enum Comp(T1, T2) = __traits(isUnsigned, T2) - __traits(isUnsigned, T1);
static assert( staticIsSorted!(Comp, uint, ubyte, ulong, short, long));
static assert(!staticIsSorted!(Comp, uint, short, ubyte, long, ulong));
Suggestion Box / Bug Report