Hi, I've got the following code that takes a list of files as argument and xor them together (demo example sufficient for that discussion).

    import std.stdio;
    import std.array;
    import std.range;
    import std.algorithm;

    auto rawContent(string path) {
        return File(path).byChunk(16384).joiner;
    }

    void main(string[] args) {
        args[1..$]
            .map!rawContent
            .array
            .transposed
            .map!(bytes => bytes.fold!((a, b) => a^b))
            .writeln;
    }

This works but compiles with deprecations:

/usr/include/dlang/dmd/std/algorithm/iteration.d(663): Deprecation: function `std.range.Transposed!(Result[], cast(TransverseOptions)0).Transposed.save` is deprecated - This function is incorrect and will be removed November 2018. See the docs for more details. /usr/include/dlang/dmd/std/algorithm/iteration.d(663): Deprecation: function `std.range.Transposed!(Result[], cast(TransverseOptions)0).Transposed.save` is deprecated - This function is incorrect and will be removed November 2018. See the docs for more details.

What do you think the best course of action would be to make that code resilient to the modification of transposed? I'd very *very* much like to keep a straight UFCS line, there's really nothing complicated enough with this operation to warrant writting boilerplate, yet the straightforward solution isn't future-proof...

Any idea?

Reply via email to