rank of range
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Jul 1 10:33:48 PDT 2017
On 07/01/2017 10:05 AM, drug wrote:
> Hello!
> Is there a convenient way to get rank of range a.k.a. count of
> dimensions in compile time? Like:
>
> static assert( rankOf!(uint[]) == 1);
> static assert( rankOf!(uint[][][]) == 3);
I'm not aware of one but this seems to work:
template rankOf(R) {
import std.range : isInputRange, ElementType;
static if (isInputRange!R) {
enum rankOf = rankOf!(ElementType!R) + 1;
} else {
enum rankOf = 0;
}
}
unittest {
static assert (rankOf!long == 0);
static assert (rankOf!(int[]) == 1);
static assert (rankOf!(int[][][]) == 3);
}
void main() {
}
Ali
More information about the Digitalmars-d-learn
mailing list