On 5/29/2012 6:29 AM, Don Clugston wrote:
I think that's a no-go.
Implementation-specific behaviour at runtime is bad enough, but at compile time,
it's truly horrible. Consider that any change to unrelated code can change the
results. Something that makes it really terrible is that the same function can
be called in CTFE once before inlining, and once after. Good luck tracking that
down.
And at runtime, you have a debugger.

True, but when code relies on undefined behavior, behavior may also differ based on compiler settings, link order, compilation order, etc.

Also, note that CTFE can compute different floating point results at compile time than at runtime (because CTFE uses 80 bits for everything, even floats).

The solution is to eliminate all undefined behavior, but we can't do that and still have a systems programming language.

Reply via email to