I just spent a good while debugging something which arose as a result of the documentation of the DList's removeAny function. More precisely, it seems that removeAny removes from the *back*, rather than the front, as the documentation would indicate. To quote the relevant page (http://dlang.org/phobos/std_container.html#.DList):

T removeAny();
alias stableRemoveAny = removeAny;
Picks one value from the front of the container, removes it from the container, and returns it.

Elements are not actually removed from the chain, but the DList's, first/last pointer is advanced.

    Precondition:
    !empty

    Returns:
    The element removed.

    Complexity:
    Ο(1).


To demonstrate this, I give the following code:

import std.container, std.stdio;

DList!size_t foo;
foo.insertBack(1);
foo.insertBack(10);
auto x = foo.removeAny();
writeln(x);

According to the documentation, 1 should be printed. However, instead, 10 gets printed. Am I completely insane, or is the documentation just inaccurate?

I'm using GDC 4.9.1 for this.

Reply via email to