Vote for std.digest: ACCEPTED!

Johannes Pfau nospam at example.com
Thu Aug 30 01:33:52 PDT 2012


Am Thu, 30 Aug 2012 00:55:40 +0400
schrieb Dmitry Olshansky <dmitry.olsh at gmail.com>:

> The voting ends today, time to count the votes.
> 
> With the result of 6 YES votes vs 1 NO std.digest package is accepted 
> for inclusion into Phobos.
> 
> 
> Congratulations, Johannes.
> 
thanks everyone!

> ---
> 
> Still, there is one thing that bothers me.
> 
> Of few issues that were found (and addressed) during voting there is
> one that requires a global change (in std.algorithm). I'm talking
> about this comment by Andrei:
> 
>  > * This example:
>  >
>  > copy(oneMillionRange, &ctx); //Note: You must pass a pointer to
>  > copy!
>  >
>  > suggests we're doing something wrong. I think a better solution
>  > would be to have copy() take the target range by "auto ref", and
>  > institute this passing convention as a general rule for output
>  > ranges.
> 
> About time to remind us of auto ref and how it works then.
> The end result is we need to get a version of copy that:
> - doesn't break existing code
> - takes destination by ref when possible thus fixing this pattern.
> 

Would it be good enough if we special cased arrays to have the same
behavior as now and used 'auto ref' for all other output ranges?

I think we can't avoid breaking some code though. If some code relied on
the second parameter being passed by value, there's nothing we can do?

E.g:
----
auto a = copy([0], start); // a = start ~ 0
auto b = copy([1], start); // b = start ~ 1
auto c = copy([2], start); // c = start ~ 2


More information about the Digitalmars-d mailing list