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.

Reply via email to