On 1/2/2016 10:56 PM, Manu via Digitalmars-d wrote:
I don't want that. That's what modules are for.

C++ namespaces are not modules, either in C++ or D. We investigated making them 'special' modules, and discarded that as unworkable.


Given a C++ symbol 'NS::CSymbol', the D symbol 'x.y.NS.CSymbol' bears no
meaningful relation. D still prefixes the module scope.

D will not prefix the module name to the mangled C++ namespace name.

The user will almost certainly instead do:

module NS; // a module for the C++ thing
extern(C++, NS) void func();

Which would give them the symbol 'NS.NS.func'.

That's correct, although I would not recommend that practice. Note that you can use alias to 'lift' a scope into the current scope.

Surely what they intended was 'NS.func' to match the C++ symbol?

Then you'd need a global namespace, which D does not have.


    I am not aware of any forward reference issues with C++ namespaces, so
    without an example, I cannot do anything.
https://issues.dlang.org/show_bug.cgi?id=15389

Thank you.

Reply via email to