On 7/31/2014 1:23 AM, Daniel Murphy wrote:
"Walter Bright" wrote in message news:[email protected]...
5. assert(0); is equivalent to a halt, and the compiler won't remove it.
This is not the same definition the spec gives. The spec says assert(0) can be
treated as unreachable, and the compiler is allowed to optimize accordingly.
It says more than that:
"The expression assert(0) is a special case; it signifies that it is unreachable
code. Either AssertError is thrown at runtime if it is reachable, or the
execution is halted (on the x86 processor, a HLT instruction can be used to halt
execution). The optimization and code generation phases of compilation may
assume that it is unreachable code."
-- http://dlang.org/expression.html#AssertExpression