On 9/15/2014 3:24 PM, David Nadlinger wrote:
  1. We need to teach everybody to not use 'real' when declaring C APIs, even
though it's currently all over the place.

They should use c_long_double when interfacing with C and C++.


  2. It effectively forces everybody to make all conversions to long double
explicit in their code,

This is due to D currently not allowing implicit conversion to a struct. It's a general issue, and should be dealt with as a general issue, as it comes up whenever a wrapped type is used.


at least if it they want to be cross-platform
compatible. As the conversion will still be implicit on all platforms other than
Win64 (and potentially some GDC/LDC targets), it seems like this could turn into
another size_t-style portability trap.

I wouldn't call it a "trap", just a minor issue that the compiler will complain about.


I guess this has already been discussed more extensively, though. I even seem to
remember talking about making real equivalent to the 64 bit long double type on
MSVC targets (which IIRC GDC is going to do anyway). As I've been more or less
out of the loop for a while, could somebody please point me to the relevant
threads/issues/DIPs/…?

Even if we did that, it doesn't solve the issue of C++ name mangling for types that D doesn't have, such as 'long' and 'unsigned long'. Those will still need to be wrapped types.

Reply via email to