bug in std.algorithm.sort ??

A.M. AMAMH3 at Gmail.com
Thu Jun 4 11:17:47 PDT 2009


Andrei Alexandrescu Wrote:

> A.M. 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 at ./../../src/phobos/std/array.d(210): Attempting to fetch the front of an empty array
> > 
> > I'm using dmd2.030
> > same happens with dmd2.029
> > 
> > is that a bug?
> 
> The comp function must be an ordering function of the likes of "<", and 
> yours is a very expensive way to compute x <= y. Sort does not work with 
> "<=", only with "<".
> 
> 
> Andrei

I actually changed it to:
return x<y

btw, this is not the actual code I'm writing, if it was I'd just use sort(sa) and not make my own comparing function.



More information about the Digitalmars-d mailing list