D 2.066 is out. Enjoy!

Daniel Murphy via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Fri Aug 22 01:18:23 PDT 2014


"Jonathan M Davis"  wrote in message 
news:fxdqpmfcbskvtcafzfcp at forum.dlang.org...

> LOL. Yeah, well, it would be ni going to support C+ce if we could get an 
> actual list of the C++ features that D currently supports somewhere (and 
> how to use them if it's not obvious). You've been doing so much great work 
> on that that I have no clue what the current state of things is. For 
> instance, this is the first I've heard of anything about template support; 
> I'd thought that we were never going to support templates. Is it just for 
> name mangling or for actually compiling them?

Templates are sort-of supported.  The main motivation was to allow dmd's 
Array<T> type to be used in function signatures.  This is nice, because it 
only requires correct name mangling, you don't need to worry about 
instantiation.

Being able to call templated free functions and call methods on templated 
types will require each referenced template to be explicitly instantiated on 
the C++ side.  I don't think it's realistic for D to do this automatically, 
although it is possible to do things like generate a non-templated 
forwarding wrapper function for each instantiation.

In DDMD, this is worked around by array.d containing a 
functionally-equivalent translation of array.h.  The D code all ends up 
calling the D version, and the two must be kept exactly in sync.  This 
approach is probably feasible for accessing stl types and other common, 
rarely changing C++ templates.

There are two reason it's not better documented:
1. I hate writing documentation.  I really really hate it.
2. These features are rather difficult to use, and I don't want people to 
think they can just plug-and-play.  I've spent a lot of time fighting 
compiler alignment bugs, which are their own special kind of hell.  Many of 
those issues have been resolved now, but only in the areas that ddmd 
actually exercises. 



More information about the Digitalmars-d-announce mailing list