On Saturday, 15 September 2018 at 00:07:44 UTC, Danni Coy wrote:
So extern(C++,"ns") replaces the existing syntax
It would be in addition, at least at first. The current syntax
might be deprecated.
and then improve D's general ability to hand functioning
hijacking other functions would be the best solution
D already has tools for this.
and Walters modelling of namespaces is fixing the problem in
the wrong place?
The current solution solves the very uncommon problem of having
two different namespaces in the same file, containing symbols
with the same names (or, if functions, with common overloads),
where the person writing the bindings needs to keep a one-to-one
correspondence between C++ headers and D files, and they don't
want to introduce any meaningless structs or templates.
Specifically, Walter wants this to compile:
module whatever;
extern(C++, foo) void doStuff();
extern(C++, bar) void doStuff();
And he's not too concerned that you might have to use doubly
fully qualified names to refer to C++ symbols, like:
import core.stdcpp.sstream;
import core.stdcpp.vector;
core.stdcpp.vector.std.vector v;