bearophile:
> The semantics a not D-expert expects from assert(something) is to
> test that something is "true". For a class reference this means the
> pointer is not null.

This is the core of our disagreement: I think an object is not
"true" if it's invariant fails. It means the object is completely
invalid, no different than if it was a null pointer. It's unusable.

The sooner this check is done, the better, so we can figure out
where it went wrong.

> One more "interesting" example:

That makes sense, it's still analogous to if() like you'd expect.

Actually, I wonder if doing if(obj) should check it's invariant
too with classes, both for consistency with assert and getting
that check done even more often.

Reply via email to