<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Feb 9, 2016 at 10:53 AM, Janosch Hildebrand via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Great question.<br>
<br>
I think it might be useful for a case where you don&#39;t know if you have overlapping ranges and use `assignBackwardFrom()` defensively?<br></blockquote><div><br></div><div>You cannot use assignBackwardFrom &quot;defensively&quot; if you don&#39;t know whether you have overlapping ranges. If the ranges overlap, and the source range starts after the destination range, then assignBackwardFrom copies destructively. (It overwrites some prefix of the source range with some suffix of the source range, before copying the original prefix to the destination.)</div><div><br></div><div>It would be better to just have assignFrom behave like memmove (always non-destructively) and not have assignBackwardFrom at all… but that&#39;s not the point of this proposal.</div><div> </div></div></div></div>