Safer casts
Sean Kelly
sean at invisibleduck.org
Tue May 13 10:36:44 PDT 2008
== Quote from Don (nospam at nospam.com.au)'s article
> Sean Kelly wrote:
> > Janice Caron wrote:
> >> 2008/5/13 Sean Kelly <sean at invisibleduck.org>:
> >>> It depends what you mean by "powerful." Passing a comparator as a
> >>> template parameter,
> >>> as with sort!(), means that the choice of comparator must be made at
> >>> compile-time rather
> >>> than run-time. This may be problematic in some instances.
> >>
> >> I think you meant to say, the choice of comparator /may/ be made at
> >> compile-time. Not must.
> >>
> >> sort!(compare)(array); // compile time
> >> sort(compare, array); // run time
> >
> > I meant the way sort works in std.algorithm. But it appears that my
> > answer was D 1.0-specific. I had no idea D 2.0 added the option to
> > instantiate a template on an alias to a local variable.
> It should work in D1.0, as well. It was added not long before D1.00 came
> out.
It doesn't. Or more specifically, this doesn't work in D 1.0:
void sort(alias cmp, T)( T buf )
{
// pretend we're sorting
cmp( buf[0], buf[1] );
}
void doSort( int[] buf, bool delegate(int,int) cmp )
{
sort!(cmp)( buf );
}
Sean
More information about the Digitalmars-d
mailing list