Dimensions in compile time

Vindex tech.vindex at gmail.com
Mon Feb 8 13:27:14 UTC 2021


Thanks everyone!

The solution that works for me now looks like this:


template ndim(T) {
     static if (std.traits.isArray!T) {
         static if (is(typeof(T.init[0]))) {
             alias SubArrayType = typeof(T.init[0]);
             enum ndim = ndim!SubArrayType + 1;
         }
         else enum ndim = 1;
     }
     else enum ndim = 0;
}
unittest {
     assert(ndim!(int[]) == 1);
     assert(ndim!(int[][]) == 2);
     assert(ndim!(int[4][3]) == 2);
     assert(ndim!(int[][2][]) == 3);
     assert(ndim!(string) == 1);
}



More information about the Digitalmars-d-learn mailing list