On Saturday, 27 September 2014 at 20:18:42 UTC, Andrei Alexandrescu wrote:
On 9/27/14, 12:53 PM, IgorStepanov wrote:
On Saturday, 27 September 2014 at 18:33:24 UTC, Jacob Carlborg wrote:
On Saturday, 27 September 2014 at 11:34:32 UTC, IgorStepanov wrote:

C++ exception mechanism uses C++ type_info objects. We can inherit object.Throwable from std::exception (through extern(C++) interface), override the what() method, but there are no way to generate C++ type_info for D class now. If we want to do a compiler support of C++
exceptions, we should implement and support another one
non-standartized feature: type_info. BTW it allows to do dynamic_cast over C++ classes in D, but I think, nobody approve this suggestion,
because it can be hard).

Objective-C can do it somehow. If they can do it I'm sure we can as well.

--
/Jacob Carlborg

If someone from D commanders bless me, I can start to exploring and implementing std::type_info for D classes. If we made it, we will
implement 50% of C++ exception handling.

Would that be for throwing exceptions from D into C++? I think we can postpone that for now. -- Andrei

No, that for throwing from C++ into D: for catch an exception, we should pass type_info object to special C++ runtime function. C++ runtime determines, can throwed object type can be casted to asked type, and if yes - allow catch it and do catcher code. If you will see the my example, you will see that I do this manually: get throwed type_info and compare its mangle with requested mangle. If we will make it as possible, it will be work better, faster and reliable. As bonus: possibility to implement dynamic_cast over C++ classes.

Reply via email to