On 3/6/2018 1:58 AM, Jonathan M Davis wrote:
The entire point of making assert a core language feature was so that the
compiler could take advantage of it to generate better code. It's been like that
for D since day 1. It has always been documented to do that. It has been
discussed many times in this n.g. over the years with loooong threads. I
designed it that way so that D could potentially produce better code than other
languages in ways they could not match.
There is no other purpose to making it a core language feature.
It's fine if you want an assert-like feature to have other semantics - just
define one called 'check', give it the semantics you want, and put it in the
library. As I mentioned to Timon, support for that sort of thing is why D has
special support for __LINE__ and __FILE__.
Or just don't turn off assert checking. Personally, I use asserts in a way that
they add little overhead so they can remain active in the release build.
It's entirely under your control.