[Issue 8786] assert does not call "invariant()" function
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Oct 9 11:14:37 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8786
--- Comment #4 from Jonathan M Davis <jmdavisProg at gmx.com> 2012-10-09 10:50:32 PDT ---
The behavior of classes was discussed a lot (in particular, it didn't use to
check whether the reference was null first, which caused a lot of problems).
I'm not sure that the behavior of structs has been discussed much or that it is
necessarily entirely desirable (it's certainly not well-documented), but that's
how it works right now.
Certainly, it makes perfect sense that the struct would be converted to bool.
Whether it should also have its invariant called is debatable, but as long as
the conversion to bool involves calling a public member function, the invariant
will be called anyway. So, the behavior is probably fine.
The fact that the invariant is explicitly checked with a pointer to a struct is
then essentially the same as what happens with classes, so really, the way that
structs currently work with assert is probably the best way to go about it. The
main problem is that it's not necessarily intuitive and that it's not properly
documented. So, if the docs are updated, then it should be fine.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list