DIP61: Add namespaces to D

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Mon Apr 28 06:24:59 PDT 2014


On Sat, 26 Apr 2014 05:31:51 -0400, Walter Bright  
<newshound2 at 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


More information about the Digitalmars-d mailing list