On Sat, 26 Apr 2014 05:31:51 -0400, Walter Bright
<newshou...@digitalmars.com> wrote:
http://wiki.dlang.org/DIP61
Best practices in C++ code increasingly means putting functions and
declarations in namespaces. Currently, there is no support in D to call
C++ functions in namespaces. The primary issue is that the name mangling
doesn't match. Need a simple and straightforward method of indicating
namespaces.
There have been many proposals earlier:
http://forum.dlang.org/post/lhi1lt$269h$1...@digitalmars.com
but it seems to me that the simplest, most straightforward approach
would be better.
As more and more people are attempting to call C++ libraries from D,
this is getting to be a more and more important issue.
Just reviewed the DIP, I've been following the discussion.
One possible issue, to which I think I know the answer but it should be
explicit, is conflicting top-level functions and namespace functions:
extern(C++, N) { void foo();}
extern(C++) void foo();
Clearly, calling N.foo would be unambiguous, but there is no namespace to
qualify the global foo. I'm assuming .foo() would work, but this should be
explicit in the DIP. Right now it says use the namespace to qualify
ambiguous calls.
I think the proposal looks good to me.
-Steve