On Sunday, 8 March 2015 at 21:34:25 UTC, Dennis Ritchie wrote:
This is normal behavior?import std.stdio; import std.algorithm; void main() { auto a = [3, 5, 8]; writeln(find(remove(a, 1), 5).length != 0); // prints false writeln(a); // prints [3, 8, 8] ??? }
Yes, works as designed. `remove` writes over removed slots and returns shrunk (shrinked?) slice. It does not shrink the range at the call site. To update `a`, write the result of `remove` to it:
writeln(find(a = remove(a, 1), 5).length != 0); // still false writeln(a); // prints [3, 8]
