On 2/21/22 12:44, steve wrote:

> I had a look at the source code for map but it seems to return a private
> struct, which doesn't help.

What map and other Phobos algorithms return are called Voldemort types for the reason you state: They are unmentionable. The usual way is to return 'auto' and the template system will take care of the rest:

auto mapped(alias f, Range) (Range range) {
  import std.algorithm : map;
  return range.map!f();
}

void main() {
  auto r = [1, 2].mapped!(i => 10 * i);

  import std.algorithm;
  assert(r.equal([10, 20]));
}

And I am sure your function is more capable than being the equivalent as map. ;)

Ali

Reply via email to