On Wednesday, 18 April 2018 at 13:47:35 UTC, Jonathan M Davis
wrote:
<Exceptional answer>
Thanks for both your answers, Jonathan and Nicholas.
To the extent that I'd like to explain this in a d-idioms post,
here is a tentative synthesis of your answers (Jonathan M Davis
and Nicholas Wilson):
- breaking pure with -debug is UB
- breaking @nogc with -debug is definately not UB
- breaking @safe wit -debug is potentially UB, like an incorrect
@trusted clause would be (I'm assuming adverse conditions here)
- there is disagreement between you w.r.t whether breaking
nothrow with -debug is UB or not
Note that I'm using the "undefined behaviour" term even though
the behaviour is quite more constrained than that, because
readers have a notion of what "undefined behaviour" is.
For the purpose of brevity and simplicity I'll have to unify(!)
this complicated situation in "breaking pure/@nogc/nothrow/@safe
is Undefined Behaviour though in most cases it will work just
fine".