Proposal: takeFront and takeBack
David Piepgrass
qwertie256 at gmail.com
Thu Jul 5 14:59:47 PDT 2012
(grain of salt, I'm new to D.)
I'd vote for consumeFront being always available, because it's
distinctly more convenient to call one function instead of two,
especially when you expect that making a copy of front is cheap
(e.g. a collection of pointers, numbers or slices). Ranges where
'front' returns a pointer to a buffer that popFront destroys
(overwrites) are surely in the minority, right? So I hope they
would be retrofitted to support consumeFront.
But, given that popFront is allowed to be destructive to the
value of front, by re-using the same buffer (and that the
proposed consumeFront might also be implemented with 'delayed
destruction' to front), I am wondering how one is supposed to
implement generic code correctly when this is unacceptable, e.g.:
void append(Range1,Range2)(Range1 input, ref Range2 output)
{
// Usually works, unless input.popFront happens to be
destructive?
foreach(e; input) output ~= e;
}
More information about the Digitalmars-d
mailing list