On Wednesday, 24 January 2018 at 21:48:21 UTC, Nordlöw wrote:
Why is the memory overhead for a class instance as high as 3
words (24 bytes on 64-bit systems? I find that annoyingly much
for my knowledge database application. I'm aware of
extern(C++), having one word overhead, but such
extern(C++)-classes cannot use all of D; I get compilation
errors such as
node.d(99,25): Error: Internal Compiler Error: type
`inout(Edge)[]` can not be mapped to C++
If you don't need C++ interop and only care about getting rid of
the monitor pointer, you can declare the class as C++ class but
use the D linkage/ABI for all functions, so that they accept D
slices:
extern(C++) class Node
{
extern(D):
void foo(Node[] nodes) {}
}
Is a struct not an option?