AFAIK, we can probably get something safe once we can store openarray in objects. I never used C++/D ranges but I assume they can't escape their scope.
Regarding copies, obviously I was thinking of map with potentially a final reduce and stretch goal: filter. map without copies at minimum should be possible with sink overload with the new destructors because we could reuse the passed container in a destructive way.
