On 11/11/2015 4:16 PM, Iain Buclaw via Digitalmars-d wrote:
The main problem for seamless support is having some way to generate the C++
typeinfo in D to allow work across boundaries.

I suspect that is unnecessary.

The whole point of D's C++ interface is to interface with C++ code. Defining C++ classes in D code that does not link to any C++ code that also defines those classes won't be supported. I.e. we can reply on the C++ code generating the necessary C++ typeinfo. The generated D code only has to link to it, i.e. generate an extern reference to the name of the typeinfo.

Similarly, we never need to throw a C++ exception from D code. All we need to do is call a library function written in C++ that throws it for us.

What D does need to do is support catching an std::exception*, or a class derived from std::exception. I believe we are on solid ground in not supporting any other C++ types being thrown.

Nor do I believe we need to catch C++ objects with catch(...). Catching C++ objects will need an explicit catch(std.exception*).

Over time, perhaps it may become apparent that we do need to support more kinds of C++ types being thrown. But it is not necessary to get this lead brick airborne, and we shouldn't waste time worrying about it.

Reply via email to