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

deadalnix via Digitalmars-d digitalmars-d at puremagic.com
Thu May 1 17:22:12 PDT 2014


On Thursday, 1 May 2014 at 10:03:21 UTC, Regan Heath 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.
>

1. The whole point of C++ namespace is to avoid that. That is 
going to happen. Probably less in D as we have module scoping. 
But that makes it impossible to port many C++ headers.

2. Creating a new name lookup mechanism is the kind of idea that 
sound good but ends up horribly backfiring. There is all kind of 
implications and it affect every single identifier resolution. 
You don't want to mess with that (especially since it is already 
quite badly defined in the first place).

3. That makes it impossible to port some C++ headers just as 1.


More information about the Digitalmars-d mailing list