DIP61: redone to do extern(C++,N) syntax

Regan Heath via Digitalmars-d digitalmars-d at puremagic.com
Thu May 1 03:26:20 PDT 2014


On Thu, 01 May 2014 11:03:21 +0100, Regan Heath <regan at netmail.co.nz>  
wrote:

> On Wed, 30 Apr 2014 20:56:15 +0100, Timon Gehr <timon.gehr at gmx.ch> wrote:
>> If this is a problem, I guess the most obvious alternatives are to:
>>
>> 1. Get rid of namespace scopes. Require workarounds in the case of  
>> conflicting definitions in different namespaces in the same file. (Eg.  
>> use a mixin template.) I'd presume this would not happen often.
>>
>> 2. Give the global C++ namespace a distinctive name and put all other  
>> C++ namespaces below it. This way fully qualified name lookup will be  
>> reliable.
>
> 3. Use the C++ namespace for mangling, but not lookup.  C++ symbols will  
> belong in the module they are imported into, and be treated exactly the  
> same as a D symbol, e.g.
>
> module a;
> extern(C++, std) ..string..
>
> module b;
> extern(C++, std) ..string..
>
> module c;
> import a;
> import b;
>
> void main() { .. string .. }   // error could be a.string or b.string
> void main() { .. a.string .. } // resolved

Sorry, #1 is the same suggestion :)

R

-- 
Using Opera's revolutionary email client: http://www.opera.com/mail/


More information about the Digitalmars-d mailing list