Am Thu, 01 Oct 2015 08:52:43 +0000 schrieb John Colvin <john.loughran.col...@gmail.com>:
> On Thursday, 1 October 2015 at 07:08:00 UTC, Russel Winder wrote: > > On Wed, 2015-09-30 at 23:35 -0700, Ali Çehreli via > > Digitalmars-d-learn wrote: > >> On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn > >> wrote: > >> > [...] > >> > >> It's coming from the following no-message enforce(): > >> > >> enforce(!r.empty); > >> > >> > >> https://github.com/D-Programming-Language/phobos/blob/master/std/algo > >> rithm/iteration.d#L2481 > >> > >> You are using the no-seed version of reduce(), which uses the > >> first element as seed, which means that the range cannot be > >> empty. > > > > Well that explanation (*) makes it abundantly clear that the > > error reporting from this part of Phobos is distinctly > > substandard, let alone below par. > > > > > > (*) Which is clear and informative! > > Bug report? Then it'll get fixed. The problem is that in out minds addition has an implicit seed value of 0 and multiplication has 1, so a potentially empty range doesn't immediately raise a red flag. The correct thing to use, following this train of thought, is http://dlang.org/phobos/std_algorithm_iteration.html#.sum (Additionally it provides better accuracy when summing up floating-point values.) -- Marco