template dimensionality (S) { template count_dim (uint i = 0) { static if (is (typeof(S.init.opSlice!i (0,0)))) enum count_dim = count_dim!(i+1);else static if (i == 0 && (isInputRange!S || is (typeof(S.init[0])))
enum count_dim = 1; else enum count_dim = i; }
alias dimensionality = count_dim!(); }Should work for any case I can think of (assuming integral indices).