"Ary Borenszweig"  wrote in message news:lrbbtl$778$1...@digitalmars.com...

If assume stays in release mode then that's the difference. The problem then is that assert doesn't stay in release mode so the compiler can't make any assumption about the code that follows the "assert" because asserts are removed in release mode.

assume never creates a runtime check, assert does in non-release mode. assert's condition can't be 'assumed' in non-release mode, or the compiler could simply assume the check passed an non emit it.

In my opinion, removing asserts in release-mode is the big problem here. How expensive can an assert be? Do you really want to debug that? Wouldn't it be better to get an exception?

That's the whole point of assert+release. If you always want an exception, simply use enforce.

If the compiler *never* removes asserts, then assert and assume have the same meaning.

No, because assert puts in a runtime check in non-release.

Hopefully my table helps. I'm not sure which assert I'm talking about half the time.

Reply via email to