On Wed, 01 Jul 2015 02:53:53 -0400, ketmar <[email protected]> wrote:

On Mon, 29 Jun 2015 11:30:52 -0400, bitwise wrote:

IMO,
the D community's time would be better spent improving D/C++ interop
than trying to make D a systems language.

but that interop is excellent now! for, see, if some library has no C API,
only C++ API, authors of that library are heavily brain-damaged, and the
troubles library brings will be much greater than any benefits one can
get. and if it has C API, most of it can be translated with sed and
manually fixed (i'm doing that any time i need a new binding).

It is pretty good, but it's the little things, like these:

1) no clear specification/wiki with info on which compilers are supposed to work together -dmd and xcode default compiler work, but I found this out through trial and error

2) need to qualify your extern(C++) interface overrides with "extern(C++)"
-this shouldn't be necessary

3) extern(C++) interfaces/classes can't have virtual destructors
-even if you can't call it, as the docs specify, you should be able to put "~this();" or something into an extern(C++) interface as a placeholder so that your C++ class can have a virtual destructor.

4) C++ namespaces shouldn't conflict with module namespace scope
-this should work:
module N;
extern(C++, N) {
    interface X{}
    void foo();
}

If the above cannot work, we should be able to do something like this:

module N;
extern(C++, alias M N) or extern(C++, M = N)
{ void foo(); }
M.foo();
N.foo(); // error, foo is in "M" scope in D-land


  Bit

Reply via email to