On 11/18/2013 2:16 AM, Daniel Murphy wrote:
Yeah.  On the other hand, if we decide assert(0) means 'assume unreachable'
we can optimize out the try-catch in release mode, among other things.

try { s } catch { assert(0); } -> s
if (e) assert(0); else s; -> e; s;

I seriously object to this, as assert(0) is there for when you really do want an assert in release builds.

I.e.:

    assert(!e);         // removed in release builds
    if (e) assert(0);   // stays in release builds

It's a valid D idiom, not a bug or oversight.

Reply via email to