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

Reply via email to