Is there a generic way to do

typeof(fn(E.init))[] map1(alias fn, E, size_t n)(E[n] container)
{
  import std.algorithm.iteration : map;
  import std.array : array;
  return container[].map!fn.array;
}

@safe pure nothrow unittest
{
  int[42] c;
  auto result = map1!(_ => _^2)(c);
}


but with propagation of length of return value of `f` to a static array instead, without having to specialize each range separately?

One less elegant way would be to replace the call to `array` with an overload of `std.container.util.make` for static arrays, that checks at run-time that the length of the output static array matches the length of the input range?

Reply via email to