On Friday, 25 June 2021 at 21:05:36 UTC, IGotD- wrote:
>Yes, that's a tradeoff but one I'm willing to take. I'm thinking even bigger managed pointers of perhaps 32 bytes which has more metadata like the allocated size. Managed languages in general have fat pointers which we see everywhere and it is not a big deal.
Which languages use fat pointers? C++ may use it (but is not required to).
>If you are littering pointers you perhaps should refactor your code, use an array if loads of objects of the same type.
This is what I want to avoid as it makes refcounting more difficult. If D classes are reference types then they should always be referred to through a pointer. If you want to put it in an array, use a struct.
>Another thing which I'm not that satisfied with D is that there is no built in method of expanding member classes into the host class like C++ which creates pointer littering and memory fragmentation.
Not sure what you mean by expanding? I never liked alias this
for structs, inheritance would be simpler. Is this what you mean by expanding?
I think classes in C++ are usually used more like structs in D. C++ programmers tend to avoid using virtuals, so D-style classes (C++ classes with virtual members) tend to be a smaller part of C++ codebases (but it depends on the project, obviously).