On Monday, 30 July 2018 at 02:09:37 UTC, Walter Bright wrote:
On 7/29/2018 1:52 PM, Manu wrote:
On Sun, 29 Jul 2018 at 05:10, kinke via Digitalmars-d
<[email protected]> wrote:
[...]
so that a straight C++ namespace => D module hierarchy mapping
would probably be required in the general case:
```
// cppns/package.d
module cppns;
extern(C++, "cppns") { void foo(); }
// cppns/nested/package.d
module cppns.nested;
extern(C++, "cppns") extern(C++, "nested") { void foo(); }
```
It's beautiful!
(but I added the quotes in there for you; without quotes is
existing
defined behaviour which introduces scopes)
But that works now, I suggested it, and you didn't find it
acceptable !!?!!
No it doesn't. You missed
(but I added the quotes in there for you; without quotes is
existing
defined behaviour which introduces scopes)
With the above extern(C++, "cppns") (note the quotes) defines the
mangling, the D module defines the scope.
This is consistent with e.g. how the druntime bindings to C's
standard library (with extern(C)) are used with extern(C) only
affects the mangling, not introducing a scope, only that with
extern(C++) you can have multiple things in different namespaces
all called the same thing, so you actually need the scope as well
as the mangling.