On 8/5/16 6:25 AM, Nordlöw wrote:
Should range members front() and back() assert() or throw() on emptyness?

If it should assert() doesn't that lead to unsafer code in release mode?

What's the consensus here?

If the code is @safe, then it should trigger an error if you try to do unsafe things, regardless of asserts.

If you mark front or back or whatever @safe, and do unsafe things, then you will have to mark it as @trusted. In this case, instead of asserting, use if(cond) assert(0), or use enforce, as you can't allow unsafe behavior in a @trusted function based on the -release switch.

-Steve

Reply via email to