On 7/4/2014 6:01 AM, Daniel Murphy wrote:
long double may not be the same size as D's real, eg in msvc it's 64-bit. You
can still still call these functions from D using double in C, but the mangling
will not match in C++.


You are correct in that VC++ mangles double as 'N' and long double as 'O' but both are implemented as doubles.

This means that:

    void foo(long double d);

is callable from D if it is compiled as C, but not as C++.

This is not a language lawyer problem, as D isn't guaranteed to support all C++ mangling. As a practical problem, it would be pretty rare (since such code usually provides double overloads), and if it still was a problem a bit of adapter C++ code (a 1 liner) can be written.

Reply via email to