On Monday, 13 December 2021 at 12:16:03 UTC, Ola Fosheim Grøstad
wrote:
On Monday, 13 December 2021 at 12:08:30 UTC, evilrat wrote:
Yeah but it sucks to have making C++ wrapper just for this. I
think either pragma mangle to hammer it in place or helper
dummy struct with class layout that mimics this shim logic is
a better solution in such cases.
Literally anything but building C++ code twice for a project.
Does something like this work?
```
class _A {}
struct A {}
extern(C++) void CppFunc(ref const(A) arg);
void func(_A a){
CppFunc(*cast(A*)a);
}
```
Unfortunately no. Maybe the cast would even make it work, but I
can't have "A" and "_A" in D as separate types, because the class
is supposed to link to C++ functions and thus renaming it from A
to _A breaks that. On the other hand I can't give the struct
another name either, because that's how it is linked to in
"CppFunc".