On Sunday, 21 November 2021 at 20:30:51 UTC, Luís Ferreira wrote:

I decided to have a simple approach just to show that it is easier now to do that without workarounds, and by workarounds, I mean using scope to fetch that info and use a fake dtor, or even before scope exists, the usage of runtime-less D call with betterC + objcopy, described [here](https://theartofmachinery.com/2018/05/27/cpp_classes_in_betterc. html).

I get that the news part is all about `__traits(initSymbol)`, which in this case is about instantiating a class without druntime.

But that's just one line in the whole example. And the rest of the code? Construction may either fail altogether or cause unnecessary copies. Calling __dtor won't call destructors of base classes or derived classes. There may not even be a __dtor yet destruction may still be required through __xdtor, which still would not destruct base or derived classes. Deallocation can't be @trusted since you don't have a facility to prove that no other references exist. If anything, the code shows how NOT to use classes, contrary to what your title or preface say ;) Even simple, an example should at least be correct, don't you think?

Reply via email to