Is there any good reason why C++ namespaces are "closed" in D?

Walter Bright newshound2 at digitalmars.com
Mon Jul 30 02:18:34 UTC 2018


On 7/29/2018 1:52 PM, Manu wrote:
> On Sun, 29 Jul 2018 at 05:10, kinke via Digitalmars-d
> <digitalmars-d at puremagic.com> 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!

You must have missed my other post:

====================================================

Here's another method:

------
extern (C++, ns) { int foo() { return 1; } }

mixin template X()
{
   extern (C++, ns) { int bar() { return 2; } }
}

mixin X!() x;

-------

and another:

-----
extern (C++, ns) { int foo() { return 1; } }

struct S
{
   extern (C++, ns) { int bar() { return 2; } }
}
----


More information about the Digitalmars-d mailing list