On Tuesday, 10 April 2018 at 19:28:09 UTC, Steven Schveighoffer
wrote:
On 4/10/18 2:36 PM, Atila Neves wrote:
Haha, I remember. I do plan on dealing with emplace_back, but
I have no idea how just yet and I was hoping nobody was going
to call me on it until then. Busted! :P
I think we all agree you aren't going to instantiate C++
templates in D (and who would want to).
Do we? Do I? :P
(I've actually seriously considered it)
But since you are using a wrapper to call the compiler, and
invoking clang anyway, generating a file to compile which calls
the template to generate the object file for the method, and
then using the symbol generated to bind to the method might be
possible. Of course, you first have to compile your D code to
see what templates to generate! So this is another extra step.
That's one of my ideas.
It could be as easy as generating a mock C++ template for
vector, that then has a symbol that d++ recognizes and both
replaces with a real call AND helps you figure out what C++
template to generate. -vcg-ast may help here.
The details elude me right now, but that seems to make sense.
Whatever this is going to be, it ain't going to be fast...
Compiling C++ isn't known to be fast. ;)
It might be possible to limit the damage by confining the C++
#includes to one D package or module so it doesn't get rebuilt
every time.
Atila