June 04, 2009
import std.string;
import std.array;
import std.algorithm;

void main()
{
        string[] sa = ["TOM","JOE","TOM4","TOM12","TOM6"];
        sort!(comp)(sa);
}
bool comp(string x, string y)
{
        string[] s = [x,y];
        return isSorted(s);
}

this code compiles find, but when run gives the following error:

core.exception.AssertError@./../../src/phobos/std/array.d(210): Attempting to fetch the front of an empty array

same happens if operating on int not string
I'm using dmd2.030
same happens with dmd2.029

is that a bug?
June 04, 2009
On Thu, 04 Jun 2009 07:18:33 -0400, A.M. <AMAMH3@Gmail.com> wrote:

>import std.string;
>import std.array;
>import std.algorithm;
>
>void main()
>{
>        string[] sa = ["TOM","JOE","TOM4","TOM12","TOM6"];
>        sort!(comp)(sa);
>}
>bool comp(string x, string y)
>{
>        string[] s = [x,y];
>        return isSorted(s);
>}
>
>this code compiles find, but when run gives the following error:
>
>core.exception.AssertError@./../../src/phobos/std/array.d(210): Attempting to fetch the front of an empty array
>
>same happens if operating on int not string
>I'm using dmd2.030
>same happens with dmd2.029
>
>is that a bug?

... Yes, but not with Phobos. The comparison operator should use < less than, if two items are equal they must return false. isSorted(["TOM","TOM"]) is true, "TOM" < "TOM" is false.

Gide