[Issue 21337] New: join can iterates ranges multiple times

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Oct 22 13:06:49 UTC 2020


https://issues.dlang.org/show_bug.cgi?id=21337

          Issue ID: 21337
           Summary: join can iterates ranges multiple times
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: phobos
          Assignee: nobody at puremagic.com
          Reporter: rmanth at gmail.com

class Once
{
    bool empty;
    void popFront() { empty = true; }
    int front() { return 0; }
}

void main()
{
    import std.array : join;
    import std.algorithm.iteration : map;

    assert([1, 2].map!"[a]".join(new Once) == [1, 0, 2]); // fails
}


Join iterates `Once` once to make an array and again for each separator, which
obviously doesn't work.

--


More information about the Digitalmars-d-bugs mailing list