Dne 7.9.2016 v 14:07 Ethan Watson via Digitalmars-d napsal(a):
On Wednesday, 7 September 2016 at 11:42:40 UTC, Dicebot wrote:
If it is so, I'd call it a major extern(c++) bug.
The documentation seems to be correct. I can't extern( C++, class ) or
extern( C++, struct ) on an object, even in DMD 2.071.2-beta3.
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.
But regardless. Making it a class is still a bad idea since in this
exact example it needs to exist on the stack/within an objects scope,
which means you then need to further hack around with emplacement and
wrappers and blah.
Binary matching, non-trivial constructors, and treating C++ objects
like the value types they are will be required to make Binderoo work
effortlessly. I've got two out of three of those. Not having any one
of those is something of a deal breaker unless I get an effective
workaround.
I belive there is no way how to achive what you want, maybe it could be
possible to extent
extern (C++) syntax for structs, so it will be possible define this()
for this specific structs