std.range.Take uses this constructor:
this(R input) { _original = input; _current = input.save; }
It shouldn't. It is the caller who should chose to (or not to) save.
std.range.Take uses this constructor:
this(R input) { _original = input; _current = input.save; }
It shouldn't. It is the caller who should chose to (or not to) save.