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]`).