On Tuesday, 14 October 2014 at 23:01:49 UTC, Andrei Alexandrescu
wrote:
On 10/14/14, 3:53 PM, Meta wrote:
On Tuesday, 14 October 2014 at 22:27:35 UTC, Walter Bright
wrote:
Currently, D supports C++:
* function calling
* name mangling
* namespaces
* templates
* member functions
* single inheritance
* basic types that exist in C++ but not D (like 'long')
Note that there are no plans to support C++ semantics - the D
side
will support only D semantic rules. SFINAE, Koenig lookup,
etc., have
no place in D.
C++ interop will require the user to be flexible on both the
C++ and D
side, and bluntly will require strong knowledge of D and C++
and how
they work under the hood to be successful with it.
Probably the most tricky thing we're working on is interop
with C++
exceptions.
Essentially, we're going to see how far we can push interop.
To clarify, templates have to be instantiated on the C++ side
before
being passed to D, right? Is it correct that D can't
instantiate a C++
template?
Correct. Here's the syntax on the C++ side:
http://en.wikipedia.org/wiki/C++11#Extern_template -- Andrei
Understood, makes sense.