On Sun, 29 Jul 2018 at 01:30, Walter Bright via Digitalmars-d <[email protected]> wrote: > > On 7/29/2018 1:15 AM, Manu wrote: > > All we're asking for is that C++ namespaces do **nothing** except affect the > > mangling. > > If I do that, the next bug report will be: > > extern (C++, "ab") { void foo(); } > extern (C++, "cd") { void foo(); } // Error, foo() is already declared > > foo(); // which one gets called? > > The reason namespaces were added to C++ is to not have such name collisions. > Namespaces in C++ introduce a scope. D cannot interoperate with this without > introducing a scope as well.
You're really reaching here. Of course, this error is legitimate and correct. Any D programmer knows they can't do this, and why would they expect they could? There's no way you'll get a bug report from someone complaining they can't multiply define symbols in the same scope. That's common sense. They will intuitively move the second declaration into a second module. ...or they'll use your existing mechanism; it's in there now, we can't remove it. But please support a variant where we can specify namespace as a string and opt-out of any funny business with scoping.
