diff --git a/std/range.d b/std/range.d index fa3dd999246..eecac4b0408 100644 --- a/std/range.d +++ b/std/range.d @@ -4348,16 +4348,12 @@ struct Cycle(R) } body { - auto retval = this.save; - retval._index += i; - return takeExactly(retval, j - i); + return this[i .. $].takeExactly(j - i); } auto opSlice(size_t i, DollarToken) { - auto retval = this.save; - retval._index += i; - return retval; + return typeof(this)(_original, _index + i); } } else @@ -4463,16 +4459,12 @@ struct Cycle(R) } body { - auto retval = this.save; - retval._index += i; - return takeExactly(retval, j - i); + return this[i .. $].takeExactly(j - i); } auto opSlice(size_t i, DollarToken) { - auto retval = this.save; - retval._index += i; - return retval; + return typeof(this)(*cast(R*)_ptr, _index + i); } }