On Saturday, 29 April 2017 at 18:54:36 UTC, سليمان السهمي (Soulaïman Sahmi) wrote:
But still, this needs to be fixed, copy pasting the name mangling is in my opinion just a hack for your specific cpp compiler on your specific platform.

It can't be fixed on the D side as the Visual C++ mangling of `float color[3]` as `float * const color` cannot be represented in D, see the corresponding DMD issue https://issues.dlang.org/show_bug.cgi?id=17359.

Just to be clear, a D declaration `extern(C++) bool cppFunc(float[3] color)` isn't compatible with the nearly identically looking C++ one, as it implies by-value semantics for `color` (not available in C++), that's why DMD doesn't allow it and so can't mangle it according to the target's C++ compiler. And the C++ byref version `float (&color)[3]` is mangled differently again (compatible with D's `ref float[3]`).

Reply via email to