Struct default constructor - need some kind of solution for C++ interop
deadalnix via Digitalmars-d
digitalmars-d at puremagic.com
Wed Sep 7 14:08:47 PDT 2016
On Wednesday, 7 September 2016 at 20:55:52 UTC, Walter Bright
wrote:
> On 9/7/2016 5:07 AM, Ethan Watson wrote:
>> But ignoring that. My first member is offset by 8 bytes, even
>> in an extern( C++
>> ) class. I assume it's just blindly sticking a vtable in there
>> regardless of if
>> I actually define virtual functions or not.
>
> This came up before with Manu's desire to match complex C++
> hierarchies that are, in essence, multiple inheritance even if
> they didn't look like multiple inheritance. D only supports
> multiple inheritance as interfaces. Having C++ classes with no
> _vptr means multiple inheritance (I know this isn't obvious
> why, but if the details are worked through it is inevitable.)
>
He is not the only one. I raised that has the n°1 problem I had
when interfacing with C++ years ago. Even made a proposal.
It is clear at this point that structures with obligatory
initialization are necessary. For C++ but not only. Right now,
all dtors need to make sure that the .init state is valid, which
can be a performance problem (you need to add runtime checks to
know if you actually need to destroy a resource).
More information about the Digitalmars-d
mailing list