On Tuesday, 21 April 2015 at 07:46:03 UTC, Vlad Levenfeld wrote:
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 enum count_dim = i;
  }

  alias dimensionality = count_dim!();
}

Then you throw in some more stuff to detect 1-dimensional cases.

Great! I guess a template restriction on opSlice would be in Place aswell.

One thing: Why aren't you using opIndex instead? If there are types that have opIndex but not opSlice defined then dimensionality() could cover more types, right?

Reply via email to