On Monday, 5 October 2015 at 07:01:35 UTC, Dmitry Olshansky wrote:
Supposed to be the case for structs except for any bugs.
Not on the heap. There are many cases where the destructor won't
run and it is allowed by spec. We should do better.
Until then, no, D's mechanisms for non-heap allocations are
vastly
inferior to C++'s.
Well need some helpers for RC/on stack classes plus kill that
horrible extra monitor field.
Otherwise I fail to see how. Plus with D's everything is
movable by default. I mean I can memcpy D's structs just fine
_by spec_ provided that I bitblit T.init over the source.
In C++ you can't - not only self-references are permitted but
also there is no T.init so there is no bit-pattern that is
guaranteed to not explode in dtor.
Guaranteed construct/destruction is actually a desirable feature
IMO. You get all kind of extra case int he dtor to care for when
you can't ensure proper construction, and it is not always
possible to have a meaningful .init value, leading to many
useless runtime checks or an invalid dtor.