On 5/24/20 2:37 AM, Pavel Shkadzko wrote:
On Saturday, 23 May 2020 at 19:59:30 UTC, Ali Çehreli wrote:
On 5/23/20 11:15 AM, Pavel Shkadzko wrote:> I have tried to implement a simple flatten function for multidimensional

[...]

Thank you, I was lacking practical examples for templates with "if" constructs, ehh.

Template constraints are great but 'static if' can be more useful as it allows custom error messages:

auto makeNdim(size_t N)(size_t length) {
  static if (N == 1) {
    auto result = iota(value, value + length).array;
    value += length;
    return result;

  } else static if (N > 1) {
    return iota(N).map!(n => makeNdim!(N - 1)(length)).array;

  } else {
    static assert(false, "N cannot be 0.");
  }
}

Ali

Reply via email to