On Thursday, 19 April 2012 at 03:37:00 UTC, bearophile wrote:
Brad Anderson:
You can popFront() for as long as you want well passed the
length. Obviously popping off the front of a zero length range
isn't valid but I would have expected a range violation to
occur rather than it to silently continuing the series with a
wrapped around length.
I think it's a matter of design and it's a matter of having an
alternative Phobos release that contains asserts too. Adding
the test slows down something (iota) that must be as fast as
possible. And currently asserts are removed from the compiled
Phobos...
Bye,
bearophile
Since iota is a template doesn't that mean it's not in phobos.lib
but rather generated and built into my application? I'm not
compiling in release mode so I would think any bounds checking it
had would remain (I haven't yet looked at the source to see if
there are any checks). I can definitely see stripping any bounds
checking from a release build, of course.
Doing this same thing to a slice of an array does throw a Range
Violation exception in release (and asserts in debug).
Regards,
Brad Anderson