On Friday, 7 July 2017 at 14:17:34 UTC, Jonathan M Davis wrote:
What does it even do?

asserts that the this pointer is not null, apparently which is annoying because you'd crash anyway. I suppose you might get a nicer error message but it doesn't add much.

I don't see how it makes any sense for _anything_ to have an invariant if it's not explicitly declared.

Worse I can't even @disable it because thats a syntax error.

And honestly, I'm of the opinion that invariants with structs are borderline useless, because they're run even before opAssign, meaning that if you ever need to use = void; or use emplace, then you're screwed if you have an invariant, because it's bound to fail due to the object not having been initialized previously.

Huh, I didn't know that. That does seems to be purpose defeating zealotry.

Unfortunately, I couldn't get Walter to
agree that it made sense to not call the invariant prior to opAssign being called - which is why SysTime no longer has an invariant (it was blowing up in people's code due to emplace IIRC). As such, it seems that much more stupid for structs to get any kind fo invariant automatically.

- Jonathan M Davis

Reply via email to