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.

Reply via email to