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.